IF命令中,使用比较运算符的命令格式如下:
(一) IF [NOT] string1 == string2 command
(二) IF [/I] [NOT] string1 compare-op string2 command
其中, compare-op 可以是:
注意: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:\>
写作不易,如果本文对您有用,请 “在下面一圈三连”。