Categories: Windows

バッチファイルで指定したキーの入力のみを受け付けるchoiceコマンドの紹介

以前「set /p」コマンドを用いてユーザの入力を受け付ける方法を紹介しました。

Windowsのバッチファイルで、起動した後にユーザに入力を促し、入力した結果に応じて処理を分岐させたりしたい場合があると思います。 ...

しかしながら、バッチファイルを用いたツールなどを配布する上で、ユーザから任意の入力を受け付けるわけではなく、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文などと組み合わせて条件分岐することで、キー入力に応じた処理をユーザに提供することができます。

本記事ではWindowsのバッチファイルでif文を使って条件分岐する方法を紹介します。 ifを用いた条件分岐 条件式に使用でき...

Haruoka