批处理文件等待,直到我设置b =时按Enter键

时间:2013-11-06 11:33:22

标签: variables batch-file set delay enter

我在批处理脚本中遇到了一些问题。 在这个脚本中,我希望它在按下按钮时对按下按钮作出反应,然后“设置”新变量而不必按 Enter 。 目前,就像这样;

set b=
set /p b=
ig %b%==a (
goto Success
)

它允许我按下我想要的按钮,但我不希望它等到我之后按 Enter

2 个答案:

答案 0 :(得分:6)

对于VISTA及更高版本

如果您知道您的脚本将在Vista或更高版本(而不是XP)上运行,那么您可以使用choice命令。您必须指定要接受的字符。默认情况下,CHOICE不区分大小写。返回的ERRORLEVEL对应于选择列表中所选字母的位置。

例如,要等待用户按ABC(区分大小写)并将键值存储在变量中:

setlocal enableDelayedExpansion
set "list=ABC"
choice /cs /c "%list%"
set "list=.%list%"
set "key=!list:~%errorlevel%,1!"
echo %key%

可以通过键入HELP CHOICECHOICE /?

从命令行获取完整文档

适用于所有现代Windows,包括XP

我被介绍了一个非常聪明的解决方案,适用于XP及when I was developing my batch implementation of the SNAKE game之外。此解决方案允许您捕​​获几乎任何按键。

set "key="
for /F "usebackq delims=" %%A in (`xcopy /w "%~f0" "%~f0" 2^>NUL`) do (
  if not defined key set "key=%%A"
)
set "key=%key:~-1%"
set key

答案 1 :(得分:1)

批量使用choice

choice /c YN /m "Is Yes"
if ( %ERRORLEVEL% == 1 ) (
   ECHO "SUCCESS"
)