括号混乱
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 /?
,如果表达式中存在逻辑或模数运算符,则需要引号(尽管这不是必须执行的步骤)。