您的位置:首页 > 其它

Windows下批处理文件(.bat)的使用

2015-08-12 14:22 316 查看
批处理(Batch),就是进行批量的处理,英文译文BATCH,批处理文件后缀BAT就取的前三个字母,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中。批处理文件是扩展名为.bat或.cmd的文本文件,包含一条或多条命令,由DOS或Windows系统内嵌的命令解释器来解释运行。批处理程序虽然是在命令行环境中运行,但不仅仅能使用命令行软件,任何当前系统下可运行的程序都可以放在批处理文件中运行

批处理文件是无格式的文本文件。在命令提示符下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。

批处理的本质,是一堆DOS命令按一定顺序排列而形成的集合。任何在命令提示符下可使用的命令都可用在批处理程序中

批处理文件的格式:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。

批处理文件中完全可以使用非dos命令,甚至可以使用不具有可执行特性的普通数据性文件。

批处理常用命令:批处理命令是不区分大小写的

1. echo:显示此命令后的字符;

2. echo. :显示一个空行(相当于输入一个回车的结果);

3. echo off:在此语句后所有运行的命令都不显示命令行本身;

4. @:@与echo off相似,但它是加在其它命令行的最前面,表示运行时不显示命令行本身;

5. call:调用另一条批处理文件(如果直接调用别的批处理文件,执行完那条命令后将无法执行当前文件后续命令);

6. start:调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用,等外部程序完成后才继续执行剩下的指令;

7. pause:运行此句会暂停,显示Pressany key to continue… 等待用户按任意键后继续;

8. rem:与::类似,表示此命令后的字符为解释行,不执行,只是给自己今后查找用的;

9. %:表示参数,参数是指在运行批处理文件时在文件名后加的字符串,变量可以从%0到%9,%0表示文件名本身,字符串用%1到%9顺序表示;

10. if:将判断是否符合规定的条件,从而决定执行不同的命令;

11. for:循环命令,只要条件符合,它将多次执行同一命令;

12. choice:在批处理程序中,通过显示提示信息并暂停批处理程序,用户可以从一组选项键中进行选择;

13. goto:跳转命令,程序指针跳转到指定的标签,从标签后的第一条命令开始继续执行批处理程序;

14. set:显示、设置或删除变量,批处理中的变量是不区分类型的,不需要像C语言中的变量那样还要区分int、float、char等;

15. cls:清屏;

16. ver:显示版本

17. >、>>:都是输出重定向命令,就是把前面命令的输出写入到一个文件中;两者的区别是”>”会清除掉原有文件中的内容后把新的内容写入原文件,而”>>”只会另起一行追加新的内容到原文件中,而不会改动其中的原有内容;

18. errorlevel:每个命令运行结束,可以用这个命令行格式查看返回码,默认值为0,一般命令执行出错会设errorlevel为1;

下面是个简单的例子:autotest.bat

@echo off

:: auto run unit test

mkdir "E:/tmp/32"
mkdir "E:/tmp/64"
echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo.

echo start auto test ...

set exePath=E:/tmp/api_x64/bin

if "%1"=="32" set exePath=E:/tmp/api_x86/bin
if "%1"=="64" set exePath=E:/tmp/api_x64/bin
:: echo %1

set srcImagePath=E:/tmp/testImages
set dstImagePath=E:/tmp/%1
:: echo %dstImagePath%
set txtOutput=%dstImagePath%/result.txt
:: echo %txtOutput%

echo A.exe >> %txtOutput%
start /b /wait %exePath%/A.exe %srcImagePath%/cat.jpg %dstImagePath%/result_cat.jpg >> %txtOutput%
echo A.exe %errorlevel%
echo.

echo B.exe >> %txtOutput%
start /b /wait %exePath%/B.exe %srcImagePath%/dog.jpg 10 20 %dstImagePath%/result_dog.jpg >> %txtOutput%
echo B.exe %errorlevel%
echo.

echo end auto test ...


参考文献:

1. http://baike.baidu.com/link?url=aYmX7ckGvNQkGaoApTIaa8oxivfLb8ygosyVNrM0DkE5I5mR0AhJGvLtwyZAiC6L3QYlk-YXggwYghWcyfQbxq

2. http://wenku.baidu.com/link?url=SbWxLyV0sjiDgk0Cv5A0GzpR5x-d10xF1qfSbVi_p5OZ6xaZb2sw2tB14hcpuIh9smL2G76ViEiGO64VSMyHU-d3aseY_lSskYgApu3E3jm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: