批处理文件 - IF语法错误

时间:2017-01-21 11:33:12

标签: batch-file

当我从命令提示符运行此批处理文件时,出现此错误:

  

该命令的语法不正确。

这与我的IF语句有关,但据我所知,我的语法是正确的 - 包括确保我在括号内有必要的空格:

SET foo=bar

:: test
IF "%foo%" EQU "bar" (
  :: foo

  ECHO "equal to"

) ELSE (
  :: bar

  ECHO "not equal to"
)

2 个答案:

答案 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"
)

http://ss64.com/nt/rem.html

了解详情