3

我在制作的批处理脚本中遇到了一些问题。在这个脚本中,我希望它在我按下按钮的那一刻做出反应,并“设置一个新变量而无需按下 ” Enter。目前是这样的;

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

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

4

2 回答 2

6

对于 VISTA 及更高版本

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

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

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
于 2013-11-06T12:27:50.460 回答
1

choice批量使用

choice /c YN /m "Is Yes"
if ( %ERRORLEVEL% == 1 ) (
   ECHO "SUCCESS"
)
于 2013-11-06T12:27:36.587 回答