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

use*_*215 3 variables enter batch-file set delay

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

set b=
set /p b=
ig %b%==a (
goto Success
)
Run Code Online (Sandbox Code Playgroud)

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

dbe*_*ham 6

对于VISTA及以后

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

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

setlocal enableDelayedExpansion
set "list=ABC"
choice /cs /c "%list%"
set "list=.%list%"
set "key=!list:~%errorlevel%,1!"
echo %key%
Run Code Online (Sandbox Code Playgroud)

通过键入HELP CHOICE或命令行可以获得完整的文档CHOICE /?

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

当我开发SNAKE游戏的批处理实现时,我被介绍了一个非常聪明的解决方案,适用于XP及更高版本.此解决方案允许您捕​​获几乎任何按键.

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
Run Code Online (Sandbox Code Playgroud)