批处理文件编写
批处理
批处理文件是以.bat或者.cmd为扩展名的文件,其中可以包含各种命令。
批处理有的时候是非常有用的,具体我就不举例子了。
马上进入正题,下面我们看看批处理文件的一些知识。
Application Error:一般程序返回0表示没有发生问题。否则返回1或者其他数字来表示有
错误发生。
批处理基本指令:
Call:
主要工作是从一个批处理文件调用其他的批处理文件,可以传递参数给另外的批处理,且并不等待调用返回。
语法:call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
其中有个label是可选的,
Echo
这个不用介绍了。回显的开关。语法:Echo [on/off] message.
如果要显示一个空行,可用 echo.
Endlocal
在.bat,.cmd文件的默认隐式的有这么一句,来回复当前的环境变量到最近一次Setloacl处。将环境变量的修改控制在bat文件内部。
Setlocal
开始控制环境变量在当前的脚本中。遇到Endlocal时释放,恢复原先状态。如果没有Setlocal,那么对环境的修改将在
正果bat执行过程中有效。
For
这里的for和我们高级语言中的是不同的。这里仅仅能作用于对指定的一组文件的操作循环。
语法:for [/R/F/D/L] {%variable|%%variable} in (set) do command [ CommandLineOptions]
/R:递归
/D:仅对目录
/L: for /L {%% | %}variable in (start#,step#,end#) do command [CommandLineOptions]
/F:比较复杂了
Goto
goto :label
If
语法:
if [not] errorlevel number command [else expression]
if [not] string1==string2 command [else expression]
if [not] exist FileName command [else expression]
If command extensions are enabled, use the following syntax:
if [/i] string1 CompareOp string2 command [else expression]
if cmdextversion number command [else expression]
if defined variable command [else expression]
预定义好的变量: %cmdcmdline% : cmd.exe路径
%cmdextversion% : cmdextversion
%errorlevel% : errorlevel
所以 if defined errorlevel 为true
关于else语句格式:
if EXIST c:\1.txt (
del c:\1.txt
) else (
echo filename. missing
)
必须符合行和空格的要求。else后空格必须有
实际运行时的样子:if EXIST c:\1.txt (del c:\1.txt ) else (echo filename. missing)
Pause:
暂停批处理程序,并给以提示信息。
example:
@echo off
@echo will copy c: to d:
@echo are you sure ?[y/n]
get
if %1%==y (
pause
@echo coping....
)else (
@echo stopped!
)
保存成test.bat.
运行: test.bat y
Rem:注释
语法: Rem [message]
Shift:
调整批处理时参数位置。
批处理程序参数:
你可以在批处理程序的任何地方使用参数,参数表示为%n,n的范围从0到9.其中 %0表示的是批处理文件的文件名。
其他参数根据运行时输入的参数决定。
如有demo.bat c:\。那么参数%1的参数值就是c:\。如此类推。总计可以有8个。
通过Modifer访问参数。系统内置了对参数的扩展,如,你可以通过输入%~z1这样的方式获取1代表的文件的大小。
具体查文档:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
主要是针对文件的。比如获取属性(a),时间(t),大小(z)等.
主要参考资料:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
批处理文件是以.bat或者.cmd为扩展名的文件,其中可以包含各种命令。
批处理有的时候是非常有用的,具体我就不举例子了。
马上进入正题,下面我们看看批处理文件的一些知识。
Application Error:一般程序返回0表示没有发生问题。否则返回1或者其他数字来表示有
错误发生。
批处理基本指令:
Call:
主要工作是从一个批处理文件调用其他的批处理文件,可以传递参数给另外的批处理,且并不等待调用返回。
语法:call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
其中有个label是可选的,
Echo
这个不用介绍了。回显的开关。语法:Echo [on/off] message.
如果要显示一个空行,可用 echo.
Endlocal
在.bat,.cmd文件的默认隐式的有这么一句,来回复当前的环境变量到最近一次Setloacl处。将环境变量的修改控制在bat文件内部。
Setlocal
开始控制环境变量在当前的脚本中。遇到Endlocal时释放,恢复原先状态。如果没有Setlocal,那么对环境的修改将在
正果bat执行过程中有效。
For
这里的for和我们高级语言中的是不同的。这里仅仅能作用于对指定的一组文件的操作循环。
语法:for [/R/F/D/L] {%variable|%%variable} in (set) do command [ CommandLineOptions]
/R:递归
/D:仅对目录
/L: for /L {%% | %}variable in (start#,step#,end#) do command [CommandLineOptions]
/F:比较复杂了
Goto
goto :label
If
语法:
if [not] errorlevel number command [else expression]
if [not] string1==string2 command [else expression]
if [not] exist FileName command [else expression]
If command extensions are enabled, use the following syntax:
if [/i] string1 CompareOp string2 command [else expression]
if cmdextversion number command [else expression]
if defined variable command [else expression]
预定义好的变量: %cmdcmdline% : cmd.exe路径
%cmdextversion% : cmdextversion
%errorlevel% : errorlevel
所以 if defined errorlevel 为true
关于else语句格式:
if EXIST c:\1.txt (
del c:\1.txt
) else (
echo filename. missing
)
必须符合行和空格的要求。else后空格必须有
实际运行时的样子:if EXIST c:\1.txt (del c:\1.txt ) else (echo filename. missing)
Pause:
暂停批处理程序,并给以提示信息。
example:
@echo off
@echo will copy c: to d:
@echo are you sure ?[y/n]
get
if %1%==y (
pause
@echo coping....
)else (
@echo stopped!
)
保存成test.bat.
运行: test.bat y
Rem:注释
语法: Rem [message]
Shift:
调整批处理时参数位置。
批处理程序参数:
你可以在批处理程序的任何地方使用参数,参数表示为%n,n的范围从0到9.其中 %0表示的是批处理文件的文件名。
其他参数根据运行时输入的参数决定。
如有demo.bat c:\。那么参数%1的参数值就是c:\。如此类推。总计可以有8个。
通过Modifer访问参数。系统内置了对参数的扩展,如,你可以通过输入%~z1这样的方式获取1代表的文件的大小。
具体查文档:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
主要是针对文件的。比如获取属性(a),时间(t),大小(z)等.
主要参考资料:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/batch.mspx?mfr=true
posted on 2007-10-28 22:43 flyingchen 阅读(5618) 评论(2) 编辑 收藏 举报