1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;
2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
4、判断某个变量是否已经被赋值,用 if defined str 语句;
if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。
对于以上四种情形,可以分别使用如下代码:
1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。
判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:
中文含义 关系符 英文解释
等于 equ equal
大于 gtr greater than
大于或等于 geq greater than or equal
小于 lss less than
小于或等于 leq less than or equal
不等于 neq no equal
if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。
学习if条件语句
学习要点:
5种if语句的基本语法:
1。判断两个字符串是否相等,if "字符串1"=="字符串2" command 语句;
2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句;
3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句;
4。判断变量是否已经定义,if defined 变量 command 语句;
5。判断上个命令的返回值,if errorlevel 数值 command 语句。
------------------------------------------------------------------------------------------------------
1。判断两个字符串是否相等,if"字符串1"=="字符串2" command 语句
注意:在"字符串1"=="字符串2"中,是两个连续的"="
例1
@echo off set /p var1=请输入第一个比较的字符: set /p var2=请输入第二个比软的字符: if "%var1%"=="%var2%" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause</div>
执行后会要求你输入两个字符串,然后批处理判断它俩是否相同。在判断字符串是否相等的时候,if是会区分大小写
的,请看,
例2
@echo off if "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause</div>
执行后会显示:输入的两个字符不相同
如果我们不想让它区分大小写,则可以加上/i 参数。再看下面这个例子,
例3
@echo off if /i "a"=="A" (echo 输入的两个字符相同) else echo 输入的两个字符不相同 pause</div>
这次执行后会显示:输入的两个字符相同
------------------------------------------------------------------------------------------------------
2。判断两个数值是否相等,if 数值1 equ 数值2 command 语句
语句中的equ 表示相等的意思,判断两个数值之间的大小关系还有以下关系符号:
中文含义 关系符 英文解释
等于 equ equal
大于 gtr greater than
大于或等于 geq greater than or equal
小于 lss less than
小于或等于 leq less than or equal
不等于 neq no equal
我们还是来看个例子,
例4
@echo off set /p var=请输入一个数字: if %var% geq 10 (echo 此数大于或等于10) else echo 此数小于10 pause</div>
注意哦,批处理中的大于号,小于号,等于号等等都不能用:“>” “<” “=” 这些符号,而要用像"gtr"这类
的。
☆注意:if 比较字符串与比较数字 之间的区别,它们的区别体现在引号""上面,请看下面的例子
【example 1】
@echo off if "12" lss "4" (echo 12竟然小于4哦?) else echo 12当然不会小于4的! pause</div>
执行的结果是:12竟然小于4哦?
【example 2】
@echo off if 12 lss 4 (echo 12竟然小于4哦?) else echo 12当然不会小于4的! Pause</div>
执行的结果是:12当然不会小于4的!
为什么【example 1】中加了双引号""会出错呢?
原因如下:
如果要比较的两个元素加了双引号"",那么会被当成是字符的比较。两个元素作比较的流程是:先比较两个元素
的首位,如果首位相同,再比较第二位,如果第二位相同,再比较第三位。。。依此,在【example 1】if "12" lss
"4" 语句中,实质是1与4的比较,1当然小于4,所以执行了后面的命令:echo 12竟然小于4哦?
☆建议:如果是字符串的比较就使用双引号"" 是数字的比较就不用双引号了!
------------------------------------------------------------------------------------------------------
3。判断判断驱动器,文件或文件夹是否存在,if exist filename command 语句
我们来瞧瞧这个判断驱动器,文件或者文件夹是否存在的语句,这里if exist filename 是表示:存在 filename的
意思。
例5
@echo off if exist "e:" (echo e盘存在) else echo e盘不存在 pause>nul</div>
这里是判断e: 是否存在!
例6
@echo off if exist d:\123.bat (echo 123.bat文件存在!) else echo 123.bat文件不存在! pause</div>
这个例子是用来判断123.bat文件是否存在的,但并不严谨!如果123.bat是一个文件夹而不是一个文件时,上面的判
断就不行了!那么如何判断指定的文件123.txt是否存在?请看:
@echo off dir /a-d d:\123.bat >nul 2>nul if %errorlevel%==0 (echo 123.bat文件存在!) else echo 123.bat文件不存在! Pause</div>
先用dir的/a-d参数去除123.bat的目录属性,指定说明要搜索的123.bat是文件而不是文件夹,并把结果(包括正确
和错误)屏蔽(>nul 2>nul),如果dir找到了文件123.bat,那么其errorlevel值(dir命令的退出编码)会被设为0,否
则为1则是没有此文件。当然也可以用||和&&来判断。关于为什么要用if %errorlevel%==0 而不用if errorlevel 0
呢?在后面if errorlevel中会有说明!
例7
@echo off if exist test\ (echo test 是文件夹) else echo test 是文件 pause</div>
这里是判断文件夹是否存在。对于文件夹存在的判断,我们不可以用以下两种写法:
第①种
@echo off if exist test\. (echo test 是文件夹) else echo test 是文件 pause</div>
第②种
@echo off if exist test\nul (echo test 是文件夹) else echo test 是文件 pause</div>
4。判断变量是否已经定义,if defined 变量 command 语句
这是一个判断变量是否已被定义的语句,我们还是先看例子,
例8

