以前「set /p」コマンドを用いてユーザの入力を受け付ける方法を紹介しました。
しかしながら、バッチファイルを用いたツールなどを配布する上で、ユーザから任意の入力を受け付けるわけではなく、Y(Yes)やN(No)などの限られた入力のみを受け付けるようにしたい場合があります。
このように、指定したキーの入力のみを受け付けることができるようにするコマンドとして「choice」コマンドがあるので、紹介したいと思います。
choiceコマンドでYes/Noの入力を受け付ける
choiceコマンドをオプション無しで用いた場合、Yes(Y)かNo(N)の入力のみをユーザから受け付けます。サンプルは以下となります。
@echo off
choice
echo 入力したキーは%errorlevel%です
pause
入力したキーを参照するには「%errorlevel%」と記述します。本サンプルではechoコマンドで、入力したキーの情報をコンソールに表示します。
「Y」を入力した場合は以下のように動作します。Yの場合は「%errorlevel%」に「1」が入る点は注意です。
「N」を入力した場合は以下のように動作します。Nの場合は「%errorlevel%」に「1」が入る点は注意です。
それ以外のキーを入力した場合には、警告音が鳴って先に進むことができません。
choiceコマンドで任意のキーの入力を受け付ける
「choice /c:[入力キー]」と書くことで、任意のキーの入力を受け付けることができます。以下の例ではABCDEFGHIJの10個の選択肢を掲示することができます。
@echo off
choice /c:ABCDEFGHIJ
echo 入力したキーは%errorlevel%です
pause
実行例は以下となります。
「J」を選択すると、errorlevelには10が入ることがわかります。これはJが10番目のキーであるためです。このように、何番目のキーが選択されたかに応じて、errorlevelには〇番目を表す数値が入ります。
この得られた結果をif文などと組み合わせて条件分岐することで、キー入力に応じた処理をユーザに提供することができます。