if用于条件判断,适用于以下情形:
1、判断驱动器、文件或文件夹是否存在,用 if exist 语句:
if [not] exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
if [not] exist 文件路径 del 文件路径下的文件
2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
if [not] "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
if [not] 1 equ 2 (echo 1等于2) else (echo 1不等于2)
4、判断某个变量是否已经被赋值,用 if defined str 语句;
if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
5、检测命令执行完后的返回值做出判断,用if [not] errorlevel number command,示例如下:
dir z:
if errorlevel 1 goto 1 rem 如果退出代码为1(不成功)就跳至标题1处执行
if errorlevel 0 goto 0 rem 如果退出代码为0(成功)就跳至标题0处执行
:0
echo 命令执行成功!
goto exit
:1
echo 命令执行失败!
goto exit
:exit
判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。
判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:
中文 | 英文 | 关系符号 |
等于 | equal | equ |
大于 | greater than | gtr |
大于或等于 | greater than or equal | geq |
小于 | less than | lss |
小于或不等于 | less than or equal | leq |
不等于 | no equal | neq |
if语句三种格式:
(1)if 条件表达式 (语句) ( 如果条件表达式成立,将执行语句,否则,什么也不做)
(2)if 条件表达式 (语句) else (语句)
(3)if 条件表达式 (语句) else if 条件表达式 (语句) else (语句)
多层 if 嵌套的语法举例:
if exist a.txt (
if exist 1.txt (
echo 存在 a.txt 和 1.txt
) else (
echo 存在 a.txt 但是不存在 1.txt
)
) else if exist b.txt (
echo 不存在 a.txt 但是存在 b.txt
) else (
echo 不存在 a.txt 和 b.txt
)