我正在开展一个小项目并遇到(大惊喜)另一个问题。 以下是与echo命令有关的代码:
@echo off
set /a project=nothing
echo The current project is %project%
pause
exit
运行文件时,它会显示:
“当前项目为0”
任何人都知道我的问题可能是什么?
答案 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表示八进制数。因此0x12
与18
相同,与022
相同。请注意,八进制表示法可能会引起混淆:08
和09
不是有效数字,因为8
和9
不是有效的八进制数字。
上面文本中的粗体位是导致它被设置为零的位,假设您没有名为nothing
的环境变量。如果您做有这样的变量,则使用其值:
pax> set /a xyzzy=plugh
0
pax> set plugh=42
pax> set /a xyzzy=plugh
42