一、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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。