我在制作的批处理脚本中遇到了一些问题。在这个脚本中,我希望它在我按下按钮的那一刻做出反应,并“设置一个新变量而无需按下 ” Enter。目前是这样的;
set b=
set /p b=
ig %b%==a (
goto Success
)
它允许我按下我想要的按钮,但我不希望它等到我Enter之后再按下。
我在制作的批处理脚本中遇到了一些问题。在这个脚本中,我希望它在我按下按钮的那一刻做出反应,并“设置一个新变量而无需按下 ” Enter。目前是这样的;
set b=
set /p b=
ig %b%==a (
goto Success
)
它允许我按下我想要的按钮,但我不希望它等到我Enter之后再按下。
对于 VISTA 及更高版本
如果您知道您的脚本将在 Vista 或更高版本(而不是 XP)上运行,那么您可以使用选择命令。您必须指定接受哪些字符。默认情况下,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
当我开发 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
choice
批量使用
choice /c YN /m "Is Yes"
if ( %ERRORLEVEL% == 1 ) (
ECHO "SUCCESS"
)