If 命令
if 表示将判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
1、if "参数" == "字符串" 待执行的命令
参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)
如if "%1"=="a" format a:
if { %1 }=={ } goto noparms
if { %2 }=={ } goto noparms
2、if exist 文件名 待执行的命令
如果有指定的文件,则条件成立,运行命令,否则运行下一句
如if exist config.sys edit config.sys
3、if errorlevel / if not errorlevel 数字 待执行的命令
如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。
如if errorlevel 2 goto x2
DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。
注释方式
1、:: 注释内容(第一个冒号后也可以跟任何一个非字母数字的字符)
2、rem 注释内容(不能出现重定向符号和管道符号)
3、echo 注释内容(不能出现重定向符号和管道符号)〉nul
4、if not exist nul 注释内容(不能出现重定向符号和管道符号)
5、:注释内容(注释文本不能与已有标签重名)
6、%注释内容%(可以用作行间注释,不能出现重定向符号和管道符号)
7、goto 标签 注释内容(可以用作说明goto的条件和执行内容)
8、:标签 注释内容(可以用作标签下方段的执行内容)
1. 判断字符串相等。
示例如下:新建一个文本文件,命名为ifstring,修改文件类型为bat,用Notepad++打开编辑内容为:
1 @echo off 2 set "var=this is an apple" 3 rem 比较%var%是否等于apple,如果相等,返回OK,否则返回NO. 4 if "%var%"=="apple" (echo OK) else echo NO 5 pause>nul
运行结果:
注意:if判断字符串相等时候,后面用的是“==”,而不是“=”。
2. 判断数值相等。
示例如下:新建一个文本文件,命名为ifnumber,修改文件类型为bat,用Notepad++打开编辑内容为:
1 @echo off 2 set /a num1=100 3 set /a num2=10 4 if %num1% gtr %num2% echo %num1%大于%num2% 5 if %num1% EQU %num2% echo %num1%等于%num2% 6 if %num1% LSS %num2% echo %num1%小于%num2% 7 pause>nul
运行结果:
注意:比较运算符分为以下几种:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
3. 结合errorlevel使用
示例如下:新建一个文本文件,命名为iferrorlevel,修改文件类型为bat,用Notepad++打开编辑内容为:
1 @ECHO off 2 XCOPY F:studybatififerrorlevel.bat D: 3 IF ERRORLEVEL 1 ECHO 文件拷贝失败 4 IF ERRORLEVEL 0 ECHO 成功拷贝文件 5 pause>nul
运行结果:
注意:环境变量errorlevel的初始值为0,当一些命令执行不成功,就会返回一个数值,如:1 ,2 等
4. 判断变量定义与否。
示例如下:新建一个文本文件,命名为ifdefined,修改文件类型为bat,用Notepad++打开编辑内容为:
1 @echo off 2 set "str1=ok" 3 set "str2=no" 4 if defined str1 echo str1已经被定义 5 if defined str2 echo str2已经被定义 6 if defined str3 (echo str3已经被定义) else echo str3 没有被定义 7 pause>nul
运行结果: