if 命令讲解
IF命令有三种用法:
1, if [not] errorLevel number commond
2, if [not] string1==string2 commond
3, if [not] exist filename commond
说明:
NOT
条件为 false时, 才执行
errorLevel number
如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为 true
string1==string2
如果指定的文字字符串匹配,指定条件为 true 。
EXIST filename
如果指定的文件名存在,指定条件为 true 。
command
如果符合条件,指定要执行的命令。
ELSE子句
必须在 IF之后,且处于同一行(即同一个语句).
if exist filename (
del filename
) else (
echo filename missing
)
一, IF [NOT] ERRORLEVEL number command
作用:
这个用法的基本做用是判断上一条命令执行结果的代码,以决定下一个步骤.
即, %errorLevel% >= number, 则执行commond
一般上一条命令的执行结果代码只有两结果,"成功"用0 表示,"失败"用1 表示.
0 <= errorLevel <= 255
举例:
(1)
d:\cmd\05>net user
d:\cmd\05>echo %errorLevel%
0
d:\cmd\05>net user1
d:\cmd\05>echo %errorLevel%
1
(2) xcopy
xcopy退出码说明:
0 文件复制没有错误。
1 if errorlevel 2 echo。
2 用户按 CTRL+C 终止了 xcopy 。
4 出现了初始化错误。没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。
5 出现了磁盘写入错误。
要判断上面 xcopy 命令的5 种退出情况,应写成:
if errorlevel 5 echo 出现了磁盘写入错误
if errorlevel 4 echo 出现了初始化错误
if errorlevel 2 echo 用户按 CTRL+C 终止了 xcopy
if errorlevel 1 echo if errorlevel 2 echo
if errorlevel 0 echo 文件复制没有错误。
才能正确执行。
(3) 1.bat => 交互式输入命令,判断是否执行成功
@echo off
set /p var=请输入命令及其参数:
%var%
if %errorLevel%==0 (
goto success
) else (
goto error
)
:success
echo %var% 执行成功..
pause
goto :eof
:error
echo %var% 执行失败!!
pause
goto :eof
二, IF [NOT] string1==string2 commond
作用:
比较字变量或者符串的值是不是相等的.
举例:
(1) 2.bat => 输入两个字符串,比较是否相等
@echo off
set /p var1=请输入第一个字符串:
set /p var2=请输入第二个字符串:
if %var1%==%var2% (
echo 相等````````
) else (
echo 不相等!!!!!!!
)
pause
(2) 3.bat => 字符串定界符(双引号),防止误输入空格
d:\cmd\05>type 3.bat
@echo off
set /p var1=请输入第一个字符串:
set /p var2=请输入第二个字符串:
if "%var1%"=="%var2%" (
echo 相等.......
) else (
echo NO!!!!!!!!!
)
pause
d:\cmd\05>3
请输入第一个字符串:123
请输入第二个字符串:456
NO!!!!!!!!!
三, IF [NOT] EXIST filename command
作用:
判断某个文件或者文件夹是否存在的语法
注意:
路径如果有空格, 需要使用双引号
举例:
d:\cmd\05>if exist "d:\cmd\05\3.bat" @echo file is exist!
file is exist!
四, IF增强的用法
格式:
IF string1 compare-op string2 command # 参数 /I 表示不区分大小写
IF CMDEXTVERSION number command
IF DEFINED variable command # 判断变量是否存在,很有用
说明:
(1) compare-op
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
(2) cmdExtVersion
CMDEXTVERSION 条件的作用跟 ERRORLEVEL 的一样,
除了它是在跟与命令扩展名有关联的内部版本号比较。
第一个版本是 1 。每次对命令扩展名有相当大的增强时,版本号会增加一个。
命令扩展名被停用时,CMDEXTVERSION 条件不是真的。
(3) defined
DEFINED 条件的作用跟 EXISTS 的一样
如果 variable 定义了, 且不是 "set variable=", 则为真
"set variable=" 使变量variable变成未定义.
请注意 variable 为不使用引导符号%的变量名
举例:
(1)
d:\cmd\05>set var=123
d:\cmd\05>if defined var (@echo var is exist) else (@echo var is not exist!)
var is exist
d:\cmd\05>set var=
d:\cmd\05>if defined var (@echo var is exist) else (@echo var is not exist!)
var is not exist!
(2)
d:\cmd\05>set /p var=please input a number:
please input a number:5
d:\cmd\05>if %var% gtr 4 (@echo YES) else (@echo NO)
YES
d:\cmd\05>set /p var=please input a number:
please input a number:1
d:\cmd\05>if %var% gtr 4 (@echo YES) else (@echo NO)
NO