Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如果以数字进行比较,则批处理何时进行_Batch File_If Statement_Windows 7_Comparison Operators - Fatal编程技术网

Batch file 如果以数字进行比较,则批处理何时进行

Batch file 如果以数字进行比较,则批处理何时进行,batch-file,if-statement,windows-7,comparison-operators,Batch File,If Statement,Windows 7,Comparison Operators,我已经查看过,但找不到一个规范,说明使用数值比较op(例如gtr)进行比较时,批处理文件是以数值方式进行的,而不是将其参数作为字符串处理 我发现了这个问题,但它的解释——如果有任何非数字字符,那么If进行字符串比较——并不完整。例如: @echo off& setlocal enabledelayedexpansion if "123" gtr "99" echo greater if 099 gtr 10 echo greater if "+1000" gtr "0x99" echo

我已经查看过,但找不到一个规范,说明使用数值比较op(例如gtr)进行比较时,批处理文件是以数值方式进行的,而不是将其参数作为字符串处理

我发现了这个问题,但它的解释——如果有任何非数字字符,那么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

只有最后一个,如果上面做了数字和回声更大。。。但是,比较运算的两边都不完全由数字组成。

如果两个参数都可以转换为数字,则比较是以数字进行的,除非两边都被引用

因此,根据解析规则,+1000和0x99都是数字(请参见
set/?
,然后以数字形式执行比较(以
0x
开头的字符串解释为十六进制,否则,如果以
0
开头,则解释为八进制)