我目前有这个(或其等效物):
set strength+=0
if strength+ GTR 0 echo Strength Boost: %strength+%
我也试过
set strength+=0
if strength+>0 echo Strength Boost: %strength+%
和
set strength+=0
if %strength+% GTR 0 echo Strength Boost: %strength+%
和
set strength+=0
if %strength+%>0 echo Strength Boost: %strength+%
每当操作进入第二行代码时,它就会自行关闭。我希望它只回显字符串中的变量和其他文本(如果还不清楚的话)。
您似乎混淆了if
语句的工作原理。让我们分解命令。
设置
set strength+=0
创建一个名为strength+
的变量,其值为0
。这可能是您的意图,但可能会与set /a
算术运算符混淆。
如果
为了表示变量,我们用百分号包装变量名称:%strength+%
批处理文件不支持使用>
和<
作为比较运算符,因为它们还充当重定向运算符。相反,我们有一些比较运算符:
EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal
现在您的if
语句如下所示(与您显示的第三个语句相同):
if %strength+% GTR 0 echo Strength Boost: %strength+%
由于%strength+%
等于 0,因此它不大于比较另一侧的0
。
set strength+=0
它的作用:
变量:strength+
运算符:=
(赋值)
值:0
,它将名为strength+
的变量设置为0
的值。
它可能应该是:
变量:strength
运算符:+=
(递增变量)
值:0
,将变量strength
增加0
。
但这仅适用于/a
开关:
set /a strength+=0
(乍一看似乎没有意义,但实际上它确保变量被定义(如果之前没有定义,则0
,或者以前的值(不变 - 添加零不会改变数字)))
因此,if %strength+% ...
没有任何意义,因为没有变量strength+
。它应该if %strength% ...
。