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

时间:2018-02-23 02:11:49

标签: batch-file

我目前有这个(或它的等价物):

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

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

2 个答案:

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