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



我目前有这个(或其等效物):

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

最新更新