一部のタスクを簡単にするために、WinPE 用の次の Windows バッチ スクリプトを作成しました。
@ECHO OFF
CLS
:MENU
SETLOCAL
SET QUIT=FALSE
SET /P INPUTCHOICES=Type 1, 2, 3 or 4 and press ENTER:
CALL :EXECUTECHOICES %INPUTCHOICES%
ENDLOCAL
GOTO :EOF
:EXECUTECHOICES
IF [%1]==[] (GOTO :MENU) ELSE (CALL :%1)
SHIFT
GOTO :EXECUTECHOICES
GOTO :EOF
:1
cls
SET /P RB_OR_SD=Type R to reboot or type S to shutdown your PC when done, and press ENTER:
ECHO Performing task 1
ECHO.
pause
IF "%RB_OR_SD%"=="R" (GOTO :3)
IF "%RB_OR_SD%"=="S" (GOTO :4)
ELSE (GOTO :3)
:2
cls
SET /P RB_OR_SD=Type R to reboot or type S to shutdown your PC when done, and press ENTER:
ECHO Performing task 2
ECHO.
pause
IF "%RB_OR_SD%"=="R" (GOTO :3)
IF "%RB_OR_SD%"=="S" (GOTO :4)
ELSE (GOTO :3)
:3
cls
ECHO The system will now reboot
ECHO.
pause
GOTO :MENU
:4
cls
ECHO The system will now shutdown
ECHO.
pause
GOTO :MENU
GOTO :EOF
このスクリプトは、ユーザーが 1、2、3、4、R、または S 以外のものを入力するまで、正常に動作しているようです。
INPUTCHOICES
間違った記号があると、 「指定されたバッチ ラベルが見つかりません」というメッセージが表示され、プロンプトがリロードされます。
しかし、スクリプトに R または S 以外のものを入れるとRB_OR_SD
、次の使用可能なバッチ ラベルが実行されるだけであり、これはまったく問題ありません。
ユーザー入力を、 、、およびのスコープから、およびおよびのスコープから1 つの記号だけに制限したいと考えています。1
2
3
4
INPUTCHOICES
R
S
RB_OR_SD
できれば、ユーザー入力の大文字と小文字を区別しないようにします。
どんな助けでも大歓迎です。