Wins批处理基本语法
在Windows平台下,批处理可以和Wins系统很好地结合,处理一些简单的任务,比如:重复删除某种类型的文件;开机执行一些特定的命令等。
本文主要介绍批处理的基础语法,包括:批处理常用命令和流程控制。本文是在网友SS1写的博文基础上进一步整理而成,在此表示感谢。
1、关于批处理
批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令。当你编辑好批处理文件并将其保存成后缀名为“.bat”的文件之后,双击该文件或者在DOS窗口键入文件名,都可以执行该文件中的DOS命令。
2、常用命令
echo:表示显示此命令后的字符。如:
C:\>echo 我在博客园 我在博客园
@echo off:表示在此语句以及此语句后所有运行的命令都不显示命令行本身,如:
①不加echo参数
REM 将下面两行代码保存为test.bat文件 IF "1" == "1" ECHO 我是好人 PAUSE
控制台打印:
S:\>REM 将下面两行代码保存为test.bat文件 S:\>IF "1" == "1" ECHO 我是好人 我是好人 S:\>PAUSE 请按任意键继续. . .
②加上了@echo off参数,即:
@echo off REM 将下面两行代码保存为test.bat文件 IF "1" == "1" ECHO 我是好人 PAUSE
控制台打印:
我是好人 请按任意键继续. . .
注:这个命令由“@”与“echo off”组合而成,“@”表示忽略不显示本行命令行,“echo off”表示不显示本语句后的所有命令行。
call:调用另一个批处理文件,如:
REM 调用同一目录下的另一个批处理文件test2.bat call test2.bat
注:如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令
pause:暂时停止执行DOS命令,待用户键入任一字符才继续执行
rem:表示此命令后的字符为解释行(注释),不执行,只是给自己今后参考用的(相当于程序中的注释)。
3、 IF语句
用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
第一种: if [not] "参数" == "字符串" 待执行的命令。如:
IF "1" = "1" ECHO 相等
第二种:if [not] exist [路径\]文件名 待执行的命令。如:
IF exist c:\test.txt echo text.txt文件存在
第三种:if errorlevel <数字> 待执行的命令。如:
@ECHO OFF XCOPY TEST.TXT S:\TEMP IF ERRORLEVEL 1 ECHO "Copy Failed" IF ERRORLEVEL 0 ECHO "Copy Succeed"
注:IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。
4、GOTO命令
处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标 准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。如:
goto end :end echo this is the end
注:标号用“:字符串”来定义,标号所在行不被执行
5、choice命令
使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。如:
@echo off CHOICE /C YNC /M "确认请按 Y,否请按 N,或者取消请按 C。" PAUSE
注:/C /M 都是choice命令的参数,你可以在控制台输入“choice /?”来查看帮助
控制台打印:
确认请按 Y,否请按 N,或者取消请按 C。 [Y,N,C]?Y 请按任意键继续. . .
6、FOR 循环
只要条件符合,它将多次执行同一命令。 如:
for %c in (*.txt) do type %c
其中“%c”表示一个单一字母可替换的参数;括号中可以指定一个或一组文件,可以使用通配符。
上面的命令表示打印出本目录下所有的txt文件的内容。
7、综合例子
判断文件是否存在,存在则打印字符
@echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist
输入文件名,判断该文件是否存在
@ECHO OFF IF EXIST %1 TYPE %1 IF NOT EXIST %1 ECHO %1 does not exist
注:“%1”表示运行该bat命令时输入的第一个参数。DOS允许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令本身)
判断输入的字符,输出不同的内容
@echo off IF "%1" == "A" ECHO XIAO IF "%2" == "B" ECHO TIAN IF "%3" == "C" ECHO XIN
拷贝文件,并提示是否拷贝成功
@ECHO OFF XCOPY C:\AUTOEXEC.BAT D: IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件
附录1:常用命令的返回值及其代表的意义
backup
0 备份成功
1 未找到备份文件
2 文件共享冲突阻止备份完成
3 用户用ctrl-c中止备份
4 由于致命的错误使备份操作中止
diskcomp
0 盘比较相同
1 盘比较不同
2 用户通过ctrl-c中止比较操作
3 由于致命的错误使比较操作中止
4 预置错误中止比较
diskcopy
0 盘拷贝操作成功
1 非致命盘读/写错
2 用户通过ctrl-c结束拷贝操作
3 因致命的处理错误使盘拷贝中止
4 预置错误阻止拷贝操作
format
0 格式化成功
3 用户通过ctrl-c中止格式化处理
4 因致命的处理错误使格式化中止
5 在提示“proceed with format(y/n)?”下用户键入n结束
xcopy
0 成功拷贝文件
1 未找到拷贝文件
2 用户通过ctrl-c中止拷贝操作
4 预置错误阻止文件拷贝操作
5 拷贝过程中写盘错误
![扫描关注微信公众号](https://images.cnblogs.com/cnblogs_com/chanshuyi/1943043/o_220725133529_%E5%BE%AE%E4%BF%A1%E6%90%9C%E4%B8%80%E6%90%9C-%E6%A0%91%E5%93%A5%E8%81%8A%E7%BC%96%E7%A8%8B.png)