1. %* 用法
用于传递参数给批处理文件中的命令或批处理
例1. 批处理文件 test.bat, 内:
dir %*
命令:
D:/temp>setupCmdLine.bat "e:/test"
结果:
D:/temp>dir "e:/test"
驱动器 E 中的卷没有标签。
卷的序列号是 5EF3-A7A1
e:/test 的目录
2010-09-14 14:27 <DIR> .
2010-09-14 14:27 <DIR> ..
2010-09-14 14:27 <DIR> mytest
2010-09-14 14:27 <DIR> webservice
0 个文件 0 字节
4 个目录 5,349,498,880 可用字节
例2. 批处理文件test.bat内容:
for %%P in ( %* ) do echo %%P
命令:
D:/temp>test "e:/test" "e:/test2" "e:/temp"
结果:
D:/temp>for %P in ("e:/test" "e:/test2" "e:/temp") do echo %P
D:/temp>echo "e:/test"
"e:/test"
D:/temp>echo "e:/test2"
"e:/test2"
D:/temp>echo "e:/temp"
"e:/temp"
2. pause 自定义提示消息
pause命令执行后一般出现 "按任意键继续..." 字样,可以使用下面的手段定义消息:
@echo 使用我自己定义的消息
pause > nul
3. cd 命令
/d参数, 可以切换包括盘符的路径
命令:
D:/temp>cd /d "e:/test"
结果:
E:/test>
4. %cd%指当前路径
例:
命令:
C:/Documents and Settings/Administrator>echo %cd%
结果:
C:/Documents and Settings/Administrator
5. %0, %1, %2, %n
%0指批处理文件本身
%1指批处理文件第一个参数
%2指批处理文件第二个参数
例:文件 test.bat内容入下:
echo %%0=%0
echo %%1=%1
echo %%2=%2
命令:
D:/temp>setupCmdLine.bat param1 param2
结果:
D:/temp>echo %0=setupCmdLine.bat
%0=setupCmdLine.bat
D:/temp>echo %1=param1
%1=param1
D:/temp>echo %2=param2
%2=param2
6. %%
对%的转义,即作为%字符本身输出?
如上面的例子,将test.bat内容修改如下:
echo %0=%0
echo %1=%1
echo %2=%2
命令:
D:/temp>setupCmdLine.bat param1 param2
结果:
D:/temp>echo setupCmdLine.bat=setupCmdLine.bat
setupCmdLine.bat=setupCmdLine.bat
D:/temp>echo param1=param1
param1=param1
D:/temp>echo param2=param2
param2=param2
7. %~dp0
即对%0进行处理,去掉引号
%~d0 去引号,取盘符
例1. 批处理文件test.bat内容:
echo %1
echo %~d1
echo %~dp1
命令:
d:/temp>test "e:/test"
结果:
D:/temp>echo "e:/test"
"e:/test"
D:/temp>echo e:
e:
D:/temp>echo e:/
e:/
例2.
命令:
d:/temp>test "e:/test/"
结果:
D:/temp>echo "e:/test/"
"e:/test/"
D:/temp>echo e:
e:
D:/temp>echo e:/test/
e:/test/ (注意这里的区别,test/被加了进来)
例3.
test.bat内容:
@echo %1
@echo %~d1
@echo %~dp1
@echo %~dpn1
命令:
D:/temp>setupCmdLine.bat "e:/test/test.dat"
结果:
D:/temp>SET CUR_DIR=D:/temp
"e:/test/test.dat"
e:
e:/test/
e:/test/test
e:/test/test.dat
d-取盘符; p-取路径; n-取文件名
命令参考:
~I - 删除任何引号("),扩充 %I
%~fI - 将 %I 扩充到一个完全合格的路径名
%~dI - 仅将 %I 扩充到一个驱动器号
%~pI - 仅将 %I 扩充到一个路径
%~nI - 仅将 %I 扩充到一个文件名
%~xI - 仅将 %I 扩充到一个文件扩展名
%~sI - 扩充的路径只含有短名
%~aI - 将 %I 扩充到文件的文件属性
%~tI - 将 %I 扩充到文件的日期/时间
%~zI - 将 %I 扩充到文件的大小