是/否批处理文件

zip*_*ipi 5 batch-file

在我的批处理文件中,我想问用户一个问题.

我写了以下内容:

SET /P ANSWER=Click Y to continue or N to stop (Y/N)
Run Code Online (Sandbox Code Playgroud)

但我没有最后的消息).

有人知道为什么吗?

谢谢!

Joe*_*oey 13

因为您在带括号的块中使用该提示,例如

if ... (
  ...
  set /P ANSWER=Blah (Y/N)
)
Run Code Online (Sandbox Code Playgroud)

要么

for %%x in (...) do (
  ...
  set /P ANSWER=Blah (Y/N)
)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您必须转义右括号:

SET /P ANSWER=Click Y to continue or N to stop (Y/N^)
Run Code Online (Sandbox Code Playgroud)

或引用整个论点:

SET /P "ANSWER=Click Y to continue or N to stop (Y/N)"
Run Code Online (Sandbox Code Playgroud)

否则它会关闭块.如果你在右括号之后有任何东西,你会得到一个语法错误.

你在那里做的更简单的方法可能是choice命令:

choice /M "Press Y to continue or N to stop" /c YN
Run Code Online (Sandbox Code Playgroud)

然后,您可以检查错误级别以找出用户的选择:

if errorlevel 255 (
  echo Error
) else if errorlevel 2 (
  echo No.
) else if errorlevel 1 (
  echo Yes.
) else if errorlevel 0 (
  echo Ctrl+C pressed.
)
Run Code Online (Sandbox Code Playgroud)

  • +1 - 更容易我认为是使用引号:`set/p"answer =单击Y继续(是/否)".我很确定CHOICE在某些Windows版本上不是标准配置. (3认同)