当使用echo命令时,显示0而不是任何内容

时间:2015-02-23 02:07:41

标签: batch-file

我正在开展一个小项目并遇到(大惊喜)另一个问题。 以下是与echo命令有关的代码:

@echo off
set /a project=nothing
echo The current project is %project%
pause
exit

运行文件时,它会显示:

  

“当前项目为0”

任何人都知道我的问题可能是什么?

1 个答案:

答案 0 :(得分:3)

set /a用于根据表达式设置数值,例如:

pax> set /a "pi10k = 39270000 / 1250"
31416

如果您只想将其设置为字符串,使用:

set project=nothing

根据set /?的输出:

  

SET /A expression

     

/A开关指定等号右侧的字符串   是一个被评估的数值表达式。表达式评估者   非常简单,支持以下操作,减少   优先顺序:

()                  - grouping
! ~ -               - unary operators
* / %               - arithmetic operators
+ -                 - arithmetic operators
<< >>               - logical shift
&                   - bitwise and
^                   - bitwise exclusive or
|                   - bitwise or
= *= /= %= += -=    - assignment
  &= ^= |= <<= >>=
,                   - expression separator
  

如果使用任何逻辑或模数运算符,则需要   将表达式字符串括在引号中。

     

表达式中的任何非数字字符串都被视为环境变量名称,在使用它们之前将其值转换为数字。如果指定了环境变量名但未在当前环境中定义,则使用零值。这允许您使用环境变量值进行算术运算,而无需键入所有%个符号获得他们的价值观。

     

如果从命令脚本之外的命令行执行SET /A,则它会显示表达式的最终值。赋值运算符需要赋值运算符左侧的环境变量名称。数字值是十进制数,除非前缀为0x表示十六进制数,0表示八进制数。因此0x1218相同,与022相同。请注意,八进制表示法可能会引起混淆:0809不是有效数字,因为89不是有效的八进制数字。

上面文本中的粗体位是导致它被设置为零的位,假设您没有名为nothing的环境变量。如果您有这样的变量,则使用其值:

pax> set /a xyzzy=plugh
0
pax> set plugh=42

pax> set /a xyzzy=plugh
42