1、windows,xp下的cmd共有71个内置命令,每个命令都自带了帮助信息,现在先把这些帮助全部导出来放到桌面的cmdhelp目录里
这里给个代码:- @echo off&mode con lines=5 cols=50
- md cmdhelp ||(pause&exit)
- title 正在导出cmd帮助信息到cmdhelp目录内, 稍等...
- chcp 437>nul&call :help E
- graftabl 936>nul&call :help C
- cd cmdhelp
- set mark=───────────────────────────────────
- for %%i in (*.E) do (
- echo.>>%%i &echo %mark%>>%%i
- copy %%~ni.E+%%~ni.C EC_%%~ni.txt>nul
- echo %mark%>>EC_%%~ni.txt &echo.>>EC_%%~ni.txt
- )
- del *.c;*.e
- find /v "" *.txt>ALL.help
- title 已完成 按任意键查看. &pause>nul
- start notepad ALL.help
- goto :eof
- :help
- for /f %%i in ('help^|findstr "^[A-Z]"') do help %%i>>cmdhelp\%%i.%1
- goto :eof
复制代码 本人还是推荐看英文原版帮助的,这个把英文的版本与中文版本放在一起了,英语差点可以结合着看,
本想做成htm格式,这个我还没想好,论坛里已经有人写过相关代码,搜下借鉴着改*改,就可以了.
下面的帖子是我边学别写的,有收获就添,所以修改是难免的,里面的用法有些可能帮助里没有解释,那这些大都是我从论坛里前辈那总结的,
掌握变量截取%str:~x,y%即:%str%的偏移量为x处,长度为y的字符
经常要用到变量的截取,所以这个命令自然得熟练掌握,这里x,y有正有负,总共也就4种情况,分别都是怎么截取呢?
做个小试验,命令提示符下演示结果:- @echo off
- set str=%date%
- echo %str%
复制代码 2008-01-28 星期一
这个显示结果是说, 变量%str%的值为"2008-01-28 星期一"- set a=%str:~2,4%
- echo %a%
复制代码 08-0
这个说明,从%str%第2个字符右侧,往后截取4个字符, 就是变量%a%的值.下同理- set b=%str:~6,-2%
- echo %b%
复制代码 1-28 星
从%str%第6个字符右侧,往后截取%str%最后2个字符所剩余的字符, 就是变量%b%的值- set c=%str:~-3,2%
- echo %c%
复制代码 星期
从%str%的倒数第3个字符左侧,往后截取2个字符, 就是变量%c%的值- set d=%str:~-6,-2%
- echo %d%
复制代码 28 星
从%str%的倒数第6个字符左侧,往后截取%str%最后2个字符所剩余的字符,就是变量%d%的值
上面4种情况记忆是不方便的,重要的是抓住共性,下面是我的理解(很不专业!因为偶不是jsj专业的):
观察上面4个赋值语句并归纳得到语句:
set s=%str:~x,y%
的作用就是:在字符串%str%的偏移量x处,取"长度"为y的字符,然后赋给变量s.
理解与掌握:
记: 左->右 ---正方向
右->左 ---负方向
x为正或0时,偏移量x处表示沿着正方向第x个字符的右侧处.
x为负时, 偏移量x处表示沿着负方向第x个字符的左侧处.
例如 abcdefg的偏移量为-4处就是字符d的左侧处
y为正或0时,取"长度"为y的字符表示沿正方向获取y个字符.
y为负时, 取"长度"为y的字符表示沿负方向舍弃|y|(y的绝对值)个字符所得的剩余字符.
例如 abcdefg的偏移量为-4处,获取长度为2的字符,就是字符d的左侧处,沿正方向获取2个字符即:"de"
abcdefg的偏移量为2处,获取长度为-4的字符,就是字符b的右侧处,沿负方向舍弃4个字符即得到剩余的字符:"c"
另外:
当y为负时, %str:~y%表示获取%str%的后|y|字符(这个可以看做%str:~-|y|,|y|%的简写)
当y为正时, %str:~y%表示舍弃%str%的前y个字符后剩余的字符(这个很重要,用偏移量+长度的方法不能表示的.)
关于简写:
x或y其中之一为0时,0可省略. 比如: %str:~0,3% 可简写为 %str:~,3%
x为正时 : %str:~-x,x'% 可简写为 %str:~-x% (这里x'是大于x的任意正数)
最后说下,不合理的截取将会得到"空"值.
比如现在执行
set str=abcde
set f=%str:~-2,y%
显然%str%的偏移量-2处为字符"d"的左侧,由于不管y为多少,所获取的字符串都是剩余字符串"de"的子集,所以要想%f%不为空,就要合理截取.
当y取0,±1,2其中之一时%f%不为空;当y小于或等于-2时%f%为空,而当y大于或等于2时%f%恒为"de".
另外:
环境变量替换已有如下增强:
%PATH:str1=str2%
会扩展 PATH 环境变量,用 "str2" 代替扩展结果中的每个 "str1"。
要有效地从扩展结果中删除所有的 "str1","str2" 可以是空的。
"str1" 可以以星号打头;在这种情况下,"str1" 会从扩展结果的
开始到 str1 剩余部分第一次出现的地方,都一直保持相配。
比如执行:
set a=123456123456
set b=123456123456
echo %a:2=+%
echo %b:1=%
将显示: 1+34561+3456
2345623456
原文地址:http://www.cn-dos.net/forum/viewthread.php?tid=37382 |