我在批处理脚本中遇到了一些问题。 在这个脚本中,我希望它在按下按钮时对按下按钮作出反应,然后“设置”新变量而不必按 Enter 。 目前,就像这样;
set b=
set /p b=
ig %b%==a (
goto Success
)
它允许我按下我想要的按钮,但我不希望它等到我之后按 Enter 。
答案 0 :(得分: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%
可以通过键入HELP CHOICE
或CHOICE /?
适用于所有现代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"
)