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

时间:2022-01-07 06:38:26

批处理(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.      ?url=aYmX7ckGvNQkGaoApTIaa8oxivfLb8ygosyVNrM0DkE5I5mR0AhJGvLtwyZAiC6L3QYlk-YXggwYghWcyfQbxq

2.      ?url=SbWxLyV0sjiDgk0Cv5A0GzpR5x-d10xF1qfSbVi_p5OZ6xaZb2sw2tB14hcpuIh9smL2G76ViEiGO64VSMyHU-d3aseY_lSskYgApu3E3jm