当我从命令提示符运行此批处理文件时,出现此错误:
该命令的语法不正确。
这与我的IF
语句有关,但据我所知,我的语法是正确的 - 包括确保我在括号内有必要的空格:
SET foo=bar
:: test
IF "%foo%" EQU "bar" (
:: foo
ECHO "equal to"
) ELSE (
:: bar
ECHO "not equal to"
)
答案 0 :(得分:3)
尝试这样:
SET foo=bar
:: test
IF "%foo%" EQU "bar" (
rem foo
ECHO "equal to"
) ELSE (
rem bar
ECHO "not equal to"
)
或者像这样:
SET foo=bar
:: test
IF "%foo%" EQU "bar" (
::foo
ECHO "equal to"
) ELSE (
::bar
ECHO "not equal to"
)
这是cmd.exe
中的错误。标签(在这种情况下::
被视为标签)在括号上下文中不起作用。 After a label a command is expected but not an empty line
答案 1 :(得分:3)
问题是你对备注(:)使用标签。
::只能安全地用于块之外的备注。在内部块中,它会尝试执行下一行,因为它假定标签后跟一个命令。
标签注释后的空白行会导致错误。
您可以删除空白行以删除错误。在这种情况下,解析器假定标签和echo命令是要执行的命令。
试试这个:
SET foo=bar
:: test
IF "%foo%" EQU "bar" (
:: foo
ECHO "equal to"
) ELSE (
:: bar
ECHO "not equal to"
)
更安全的选择是使用真实备注命令:
SET foo=bar
rem test
IF "%foo%" EQU "bar" (
rem foo
ECHO "equal to"
) ELSE (
rem bar
ECHO "not equal to"
)
了解详情