入门命令4-条件判断:if

if 用于作条件判断,各种语言中都有这玩意.它在批处理中的用处:

1.判断两个字符串是否相等, if "字符串1"=="字符串2" command 语句;(这里用的是数学上的==,字符串比较涉及大小写在if后加参数/i)
2.判断两个数值是否相等, if 数值1 equ 数值2 command 语句;(这里用的是英文代号,是不是刚好相反^-^ 比较数值用字符串似的操作符)
3.判断驱动器,  文件或文件夹是否存在, if exist filename command 语句;
4.判断变量是否已经定义, if defined 变量 command 语句;
5.判断上个命令的返回值, if errorlevel == 命令执行返回码 command 语句.

---当然,if用完了之后可以接else  if...else也可以无限嵌套使用.

下面来实际练习一下就明白了:

1. if "字符串1"=="字符串2" command 语句

例1:

1 ::rem闭命令回
2 @echo off
3 rem 设置将输入读入变量,这个set后面会讲到,这里只需要记住用set /p 变量名=输入值
4 set /p char1=请输入第一个字符串:
5 set /p char2=请输入第二个字符串:
6 rem 引用变量用两个%把它括起来,后面会讲到
7 if "%char1%"=="%char2%" (echo 输入的两个字符相同) else echo 输入的两个字符不相同
8 pause>nul

例2:大小写区分时用/i 参数

1 @echo off 
2 if "TEST"=="test" (echo 相同) else echo 不相同
3 if /i "TEST"=="test" (echo 相同) else echo 不相同
4 pause >nul

 

2.判断两个数值是否相等, if 数值1 equ 数值2 command 语句

 

中文含义  数学表达式 关系符 英文解释
等于 = equ equal
大于 > gtr greater than
大于或等于 >= geq greater than or equal
小于 < lss less than
小于或不等于 <= leq less than or equal
不等于 != neq no equal        

例3:比较数值大小

 1 @echo off 
2 set /p var=请输入一个数字:
3 if %var% gtr 100 (
4 echo 此数大于100
5 ) else (
6 if %var% equ 100 (
7 echo 此数等于100
8 ) else echo 此数于小100
9 )
10 pause >nul

在例3中,其实所有语句都可以写在一行上.

很多人会遇到换行与括号怎么打的问题,在排版缩进时注意两点即可:

a.断行一定要从括号边上来断

b.else与括号两边各有个空格

 

3.判断驱动器,  文件或文件夹是否存在, if exist filename command 语句

例4:判断文件夹或者文件是否存在(当然也可以判断驱动器)  这是比较常用的批处理判断方式

1 @echo off
2 rem 考虑一下,为什么文件夹最后紧跟着\ 对比例5
3 if exist "d:\Program Files\" (echo 文件夹PF存在) else echo PF不存在
4 pause

例5  提示:在win平台下相同目录中:同名的文件夹与文件是不能同时存在的,所以在判断文件存在时,要注意可能会发生这类bug,解决方法为加一层判断

1 @echo off
2 if exist "d:\tutorial\" (echo 文件夹tutorial存在) else (
3 if exist "d:\tutorial" echo 文件tutotial存在
4 )
5 pause

 

4.判断变量是否已经定义, if defined 变量 command 语句  注意这里的变量处不要加%号括起来了

例6:

1 @echo off
2 set var1=""
3 if defined var1 (echo var1被定义) else echo var1未定义
4 set var2="test"
5 if defined var2 (echo var2被定义) else echo var2未定义
6 rem 释放变量,注意这个=号后没有空格
7 set var1=
8 if defined var1 (echo var1被定义) else echo var3未定义
9 pause >nul

 

5.判断上个命令的返回值, if errorlevel == 命令执行返回码 command 语句.

例7:

1 @echo off 
2 dir
3 rem 对命令成功执行,用这种比较字符串的方式来比较
4 if %errorlevel% == 0 (echo dir 命令执行成功) else (echo dir 命令执行失败)
5 pause

提示:

tip1: %errorlevel%是一个环境变量,它是用来存放上一条命令的执行后的返回码,如果命令是成功,则返回值为0,如果是失败,则返回0-255之间的值.

tip2: 想看看上一条命令返回了什么,直接echo %errorlevel% 就可以看到了

tip3: 执行net helpmsg %errorlevel%  就可以看到是什么报错信息  例如: net helpmsg 2  显示:系统找不到指定的文件.

OK,上面五种用法都讲完了,其实if语句完整的格式是if...else形式  可以无限嵌套使用,如例3.

另外,这五种形式还可以变化成另一种,即在if 后面加上not  就把判断的条件作了一个否定,比如:

例8:

1 @echo off
2 if not exist "d:\" (echo D盘不存在) else echo D盘存在
3 pause

五种用法皆适用,这情况比较简单,就不啰嗦了.

 

OK,此篇结束.





posted @ 2011-12-04 16:12  doupip  阅读(4081)  评论(0编辑  收藏  举报