如果"71"GTR"7000"产生真实

scr*_*e02 2 if-statement batch-file

根据我的代码,如果%~1大于7000,请转到ExceedError

IF "%~1" GTR "7000" GOTO ExceedError
Run Code Online (Sandbox Code Playgroud)

内容ExceedError:

ECHO Value exceeded the maximum value. See help file.
EXIT /B
Run Code Online (Sandbox Code Playgroud)

但这发生了:

...modules>If "71" GTR "7000" GOTO ExceedError

...modules>Echo Value exceeded the maximum value. See help file.
Value exceeded the maximum value. See help file.

...modules>exit /B
Run Code Online (Sandbox Code Playgroud)

发生了什么?有什么不对?

npo*_*aka 7

你用双引号括起来的参数,这会强制进行字符串比较.比较数字尝试没有引号:

IF %~1 GTR 7000 GOTO ExceedError

如果您想要防止错误,可以再添加一行:

set /a "_number=%~1" >nul 2>&1 || set "_number=0"
IF %_number% GTR 7000 GOTO ExceedError
Run Code Online (Sandbox Code Playgroud)

如果输入错误,您将使用0默认值比较这些值.如果需要,您可以更改它

  • @ scriptmastere02这是一个单独的问题.例如,请检查[如何检查Windows批处理文件中的参数(或变量)是否为数字](/sf/ask/1230899771/). (2认同)