Batch file 如果;71“;全球技术法规“;7000“;屈服于真实

Batch file 如果;71“;全球技术法规“;7000“;屈服于真实,batch-file,if-statement,Batch File,If Statement,根据我的代码,如果%~1大于7000,请转到ExceedError IF "%~1" GTR "7000" GOTO ExceedError 超出错误的内容: ECHO Value exceeded the maximum value. See help file. EXIT /B 但事情发生了: ...modules>If "71" GTR "7000" GOTO ExceedError ...modules>Echo Value exceeded the maximum v

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

IF "%~1" GTR "7000" GOTO ExceedError
超出错误的
内容

ECHO Value exceeded the maximum value. See help file.
EXIT /B
但事情发生了:

...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

发生了什么事?有什么问题吗?

您用双引号括起了参数,这将强制进行字符串比较。 要比较数字,请尝试不使用引号:

IF%~1 GTR 7000 GOTO exceller

IF "%~1" GTR "7000" GOTO ExceedError
如果要防止出现错误,可以再添加一行:

set /a "_number=%~1" >nul 2>&1 || set "_number=0"
IF %_number% GTR 7000 GOTO ExceedError

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

哦,我不知道!谢谢你解决了这个问题!但是如果他们在
%~1
上键入符号,例如
>EE
,会怎么样呢。它包含非法字符
>
。因此,脚本将对其进行错误的解释,并执行不同的操作。我的目标是“除非是一个数字,
GOTO ExceedError
”。有办法做到这一点吗?@scriptmastere2这是另一个问题。例如,请检查。@Melebius它不会改变接受非法字符的问题。这种测试有效数字的方法不可靠。有大量的输入不会导致错误,比如
-~123
或任何变量的名称,如
AA123
。如果变量未定义或包含无效数字,则结果为零,没有错误。如果变量包含一个有效数字,则结果就是这样一个数字;这可能会导致奇怪的错误…哦,对不起!我认为它可以添加问题发生的更多细节,所以我添加了这些。