一、if的三种用法 IF [NOT] ERRORLEVEL number command IF [NOT] string1==string2 command IF [NOT] EXIST filename command (1)、IF [NOT] ERRORLEVEL number do something ERRORLEVEL number是错误码也称返回码。(只是这么叫而已,和错误二字没必然联系。) 如果最后运行的程序返回一个错误码(返回码),如果它等于或大于指定数字number,则指定条件为 true。 例子: @echo off ipconfig if errorlevel 1 goto a if errorlevel 0 goto b :a echo 结果为a! pause exit :b echo 结果为b! pause 解释:“ipconfig”执行成功,则返回码为0 (2)、IF [NOT] string1==string2 do something 如果指定的文字字符串匹配,指定条件为 true。 例: @echo off if "520hack" == "520hack" echo 我们相等! pause 当然,也可以用于字符串变量的比较,如下: @echo off set str1=520hack set str2=520hack if %str1% == %str2% echo 我们相等! pause 这里去掉两个变量的值,在加个/p来理解这个参数的作用吧! (3)、IF [NOT] EXIST filename do something 如果指定的文件名存在,指定条件为 true。 例: @echo off if exist mstsc.exe echo 当前目录下存在文件mstsc.exe pause 解说:如果当前文件夹下存在mstsc.exe则显示“当前目录下存在文件mstsc.exe”,否则不显示。 以上各句中的[NOT]是可选项,表示只有条件为 false 的情况下,才应该执行该命令。 二、if-else语句 ELSE 子句必须在 IF 之后出现在同一行上。 例: @echo off IF EXIST a.txt (del a.txt) ELSE echo 不存在文件! pause 解说:如果存在文件a.txt则删除,否则显示“不存在文件!”。本程序段的这种写法是ELSE 子句在 IF 之后出现在同一行上的特殊形式,它是通过括号“(”和“)”相连接的。 由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句不会有效: IF EXIST a.txt del a.txt ELSE echo a.txt 不存在文件! 因为 del 命令需要用一个新行终止,以下子句不会有效: IF EXIST a.txt del a.txt ELSE echo 不存在文件! 需要用括号扩上。 IF EXIST a.txt (del a.txt) ELSE echo 不存在文件! 三、if的嵌套用法 例: @echo off set /p var=请输入一个数字: if %var% gtr 5 if %var% lss 10 echo 这是一个大于5小于10的数! pause 解说:首先要注意“%var%”,若要取出变量的值要用%%将变量括起来。其次运算符gtr代表大于,lss代表小于,类似的运算符还有: EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 综合实例: @echo off :again s= cls color f set /p p=please input password: set s=520hack if "%p%"=="%s%" ( echo 您已经通过了认证!&start cmd.exe ) else ( echo 密码错误! ) pause >nul goto again
|
|