IF命令中,使用比较运算符的命令格式如下:
(一) IF [NOT] string1 == string2 command
(二) IF [/I] [NOT] string1 compare-op string2 command
其中, compare-op 可以是:
- EQU --- 等于
- NEQ --- 不等于
- LSS --- 小于
- LEQ --- 小于或等于
- GTR --- 大于
- GEQ --- 大于或等于
注意:compare-op 忽略大小写
在CMD.EXE禁用命令扩展模式下,只能使用 (一)
在CMD.EXE启用命令扩展模式下, (一)和 (二)均可使用
1、如果 string1 和 string2 均为单个字符,则比较的规则如下:
- 特殊字符小于数字
- 数字小于字母
- 同一个字母,小写字母小于大写字母
- 不同的字母,按照字母表中的顺序排列。
- 字母小于汉字
上述规则的证明,详见: IF命令之比较运算符证明实例
注意:特殊字符之间的比较,并不是按照它们的ASCII码的大小进行比较的。
示例
::demo.bat
@echo off
setlocal enableDelayedExpansion
if 1 gtr ^, echo ok
if z gtr 1 echo ok
if z gtr y echo ok
if Z gtr z echo ok
if 王 gtr Z echo ok
运行
C:\>demo
ok
ok
ok
ok
ok
C:\>
2、如果 string1 和 string2 是字符串(或 string1 和 string2 其中之一是字符串),并且 string1 和 string2 不能都为数字,则它们的比较规则如下:
先 比较 string1 和 string2 的第一个字符,如果第一个字符不同,则第一个字符的比较结果就是string1 和 string2 的比较结果;如果第一个字符相同,就继续比较第二个字符,如果第二个字符不同,则第二个字符的比较结果就是string1 和 string2 的比较结果;如果第二个字符相同,就继续比较第三个字符 ...
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
:: a 大于 3
if 2a gtr 23 echo ok
:: C 大于 c
if abC gtr abc echo ok
:: 1 大于 ^,( 转义后为 , )
if 12 gtr ^,2 echo ok
:: A 大于 a
if Abc gtr abc echo ok
:: 王 大于 a
if 王 gtr abC echo ok
【标注一】 下载Notepad++
运行
C:\>demo
ok
ok
ok
ok
ok
C:\>
3、如果 string1 和 string2 均为数字,这时,它们使用的比较规则和上述第2种情况不同,需要先把它们转为数字,再按照数值进行比较。
示例
:: 本示例包含汉字,如执行乱码,请使用 Notepad++ 把本文档转化成ANSI编码 【标注一】
::demo.bat
@echo off
setlocal enableDelayedExpansion
:: 先把字符串 123 和 55 转成数字 123 和 55 ,再按照数值进行比较
if 123 gtr 55 echo ok
运行
C:\>demo
ok
C:\>
写作不易,如果本文对您有用,请 “在下面一圈三连”。