括号混乱
OP 从这个网站上发现了一个问题。
原因
请考虑以下代码段。
if 1==1 (
set /a result = 2*(3+4)
)
乍一看,你可能会认为 CMD.exe 会像这样处理它:
- 条件为真,执行代码块
- 将变量结果的值设置为
14 - 继续
然而,CMD.exe 过程如下:
- 条件为真,执行代码块
- 计算
2*(3+4,在if代码块结束后处理 4 之后的) - 一个随机的
)出现了!
第二步将返回 Unbalanced parentheses 错误。
解
根据德国 CMD.exe 的 set /?,我们需要引用算术运算。这是一个例子。
| 以前 | 结果 |
|---|---|
set /a result=2+5*4 |
set /a result="2+5*4" |
顺便说一下,根据英文 CMD.exe set /?,如果表达式中存在逻辑或模数运算符,则需要引号(尽管这不是必须执行的步骤)。