作成中のバッチ スクリプトで少し問題が発生しました。このスクリプトでは、ボタンを押した瞬間にボタンを押すことに反応し、 を押さなくても新しい変数を「設定」したいと考えています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 コマンドを使用できます。受け入れる文字を指定する必要があります。デフォルトでは、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 /?
XP を含む最新のすべての Windows に対応
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"
)