我目前有这个(或它的等价物):
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+%
每当操作进入第二行代码时,它就会自行关闭。我希望它只回显字符串中的变量和其他文本(如果还不清楚)。
答案 0 :(得分:1)
您似乎对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
。
答案 1 :(得分:0)
set strength+=0
它的作用:
变量:strength+
运算符:=
(分配一个值)
值:0
会将名为strength+
的变量设置为0
的值。
应该是什么:
变量:strength
运算符:+=
(增加变量)
值:0
这会使变量strength
增加0
。
但这仅适用于/a
开关:
set /a strength+=0
(乍一看似乎没有任何意义,但实际上它可以确保定义了变量(如果0
之前未定义,则可以定义为先前的值(不变-加零不会更改数字)))
因此,if %strength+% ...
没有任何意义,因为没有变量strength+
。应该改为if %strength% ...
。