以下代码中的语句if
不应该触发,但它确实触发了。如果我将其更改echo ()
为echo []
,它会按预期工作。所以显然它与括号有关()
。
set a=1
set b=2
if "%a%" == "%b%" (
echo foo()
echo triggered
)
输出:
triggered
答案1
它会干扰带有括号“)”的 if 结构:
如果条件为真(执行此操作)否则(执行此操作)
但是您可以使用脱字符“^”转义回显中的括号以获得所需的输出。
echo foo(^)
@echo off
set a=1
set b=1
if not "%a%" == "%b%" (
echo foo(^)
echo triggered
) else (
echo foo too(^)
)
pause
当命令解释器遇到)
字符,它明白它正在关闭它所发现的条件的指令,无论真假。
没有必要逃避(
角色,只有结尾^)
特点。