Batch file 如果引用的环境变量大于0,如何输出变量值?

Batch file 如果引用的环境变量大于0,如何输出变量值?,batch-file,Batch File,我目前有以下情况(或同等情况): 我也试过了 set strength+=0 if strength+>0 echo Strength Boost: %strength+% 及 及 每当操作到达第二行代码时,它就会自动关闭。我希望它只回显字符串中的变量和其他文本(如果还不清楚的话)。您似乎对if语句的工作原理感到困惑。让我们把命令分解一下 设置 set strength+=0 创建名为strength+的变量,其值为0。它可能是您想要的,但可能会与set/a算术

我目前有以下情况(或同等情况):

我也试过了

set strength+=0
if strength+>0 echo Strength Boost:            %strength+%


每当操作到达第二行代码时,它就会自动关闭。我希望它只回显字符串中的变量和其他文本(如果还不清楚的话)。

您似乎对
if
语句的工作原理感到困惑。让我们把命令分解一下


设置

set strength+=0
创建名为
strength+
的变量,其值为
0
。它可能是您想要的,但可能会与
set/a
算术运算符混淆


如果

为了表示变量,我们用百分号包装变量名称:
%strength+%

批处理文件不支持使用

它的作用是:

变量:
强度+

运算符:
=
(指定值)
值:
0

这会将名为
strength+
的变量的值设置为
0

它可能应该是什么:

变量:
强度

运算符:
+=
(增加变量)
值:
0

它将变量
强度增加
0

但这仅适用于
/a
开关:

set /a strength+=0
(乍一看似乎没有什么意义,但事实上它确保了变量已定义(如果以前未定义,则定义为
0
,或者之前的值(不变-加零不会更改数字)))


因此,
如果%strength+%…
没有任何意义,因为没有变量
strength+
。如果%strength%…
有效,则应改为

如果%strength+%GTR 0回波强度增强:%strength+%
有效。只是因为您已将变量设置为0,所以它不会回显字符串。只需更改该值,然后查看IF命令的帮助,您将看到可以使用的所有运算符。我也不建议在变量名中使用+符号作为最后一个字符,因为在使用SET/AThank you时,它可以被视为赋值运算符,在您的帮助和一点常识(我犯了一些其他愚蠢的错误)的帮助下,代码得到了修复。
set strength+=0
if %strength+%>0 echo Strength Boost:            %strength+%
set strength+=0
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
if %strength+% GTR 0 echo Strength Boost:            %strength+%
set strength+=0
set /a strength+=0