我已经看了但是找不到精确的批处理文件的时间规范IF使用数字比较运算(例如gtr)进行数字比较而不是将其参数视为字符串。
我发现了这个问题Windows batch file IF failure - How can 30000000000000 equal 40000000000?但是它的解释 - 如果你有任何非数字字符,那么IF进行字符串比较 - 是不完整的。例如:
@echo off& setlocal enabledelayedexpansion
if "123" gtr "99" echo greater
if 099 gtr 10 echo greater
if "+1000" gtr "0x99" echo greater
if 12-1 gtr 3 echo greater
if +1000 gtr 0x99 echo greater
只有上面的最后一个IF在数字上完成,并且回声更大......但其比较运算的一侧完全由数字组成。
答案 0 :(得分:3)
如果两个参数都可以转换为数字,那么比较将以数字方式执行,除非引用任何一方。
因此,由于+1000和0x99都是根据解析规则的数字(参见set /?
,然后比较以数字方式执行(从0x
开始的字符串被解释为十六进制,否则如果它开始0
,然后八进制)