是/否批处理文件

5
在我的批处理文件中,我想要向用户提出一个问题。
我编写了以下内容:
SET /P ANSWER=Click Y to continue or N to stop (Y/N)

但是我没有收到最后一个)的消息。

有人知道为什么吗?

谢谢!


2
它对我来说运行良好。它是否给你一个错误?还是只是没有显示最后一个括号? - Bali C
不显示最后一个括号 - zipi
1个回答

13

由于您在括号化块内使用该提示,例如:

if ... (
  ...
  set /P ANSWER=Blah (Y/N)
)
或者
for %%x in (...) do (
  ...
  set /P ANSWER=Blah (Y/N)
)

在这种情况下,您需要转义右括号:

SET /P ANSWER=Click Y to continue or N to stop (Y/N^)

或者引用整个论点:

SET /P "ANSWER=Click Y to continue or N to stop (Y/N)"
否则它会关闭这个块。如果在那个闭括号之后还有任何东西,你将会得到一个语法错误。
一个更简单的方法可能是使用choice命令:
choice /M "Press Y to continue or N to stop" /c YN

然后您可以在之后检查错误级别以了解用户的选择:

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.
)

(Y/N^) - 不要帮助问题和选择命令会导致我的批处理失败。 - zipi
3
我认为更容易的方法是使用引号:`set /p "answer=点击Y继续(Y/N)"。我相信在某些Windows版本中CHOICE命令不是标准的。 - dbenham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接