choice - ユーザーに選択させる
コマンドプロンプトやバッチファイルを使用している際、処理を分岐させるためユーザーからの入力を受け付けたい場面は多くあります。
ただ、自由に入力させてしまうと、意図しない入力によりエラーが発生してしまう可能性があります。
このページでは、ユーザーから指定したキーの入力を受け付けるchoice
コマンドについて、基本的な使い方と具体的なサンプルコードを紹介します。
choice
コマンドとは
choice
コマンドを使用すると、ユーザーに対して指定したキーの入力を促すメッセージを表示し、入力されたキーに応じて処理を分岐させることができます。
choice
コマンドの基本的な使い方は以下の通りです。
choice [/c [<選択キー1><選択キー2><…>]] [/n] [/cs] [/t <タイムアウト秒> /d <タイムアウト時の選択肢>] [/m <メッセージ>]
オプションを指定せず使用することもでき、その場合は以下のようになります。
choice
コマンドのオプション
choice
コマンドには、以下のオプションがあります。
オプション | 説明 |
---|---|
/C:[キー] | ユーザーが選択可能なキーを指定します。デフォルトでは、ユーザーは Y (yes) または N (no) を選択できます。 |
/N | プロンプト文字列の後に選択肢を表示しません。 |
/S | 設定した選択肢を大文字小文字を区別するようにします。デフォルトでは大文字小文字は区別されません。 |
/T:[秒数] | ユーザーがキーを押すまでの秒数を指定します。このオプションを指定しない場合、ユーザーがキーを押すまで無制限に待ちます。 |
/D:[キー] | ユーザーがキーを押すまでの秒数が経過した場合に使用されるデフォルトのキーを指定します。/T オプションと一緒に使用する必要があります。 |
/M:[メッセージ] | プロンプトに表示するメッセージを指定します。 |
choice
コマンドの具体的な使い方
ユーザーの選択に応じて処理を分岐する
choice
コマンドの最も基本的な使い方は、ユーザーの選択に応じて処理を分岐させることです。
以下のサンプルコードでは、ユーザーがY
を入力した場合にYes
、N
を入力した場合にNo
と表示します。
@echo off
setlocal
choice /c YN /m "Yes or No?"
if %errorlevel% == 1 (
echo Yes
) else (
echo No
)
endlocal
上記のバッチファイルを実行すると、以下のように表示されます。
ユーザーがY
を入力した場合は、以下のように表示されます。
任意のメッセージと選択肢を表示する
/c
オプションと/m
オプションを組み合わせることで、任意のメッセージと選択肢を表示することができます。
以下のサンプルコードでは、ユーザーに好きな果物を選択してもらい、選択された果物を表示します。
@echo off
setlocal
choice /c AB /m "好きな果物を選んでください。[A:りんご, B:バナナ]"
if %errorlevel% == 1 (
echo りんご
) else (
echo バナナ
)
endlocal
上記のバッチファイルを実行すると、以下のように表示されます。
タイムアウトを有効にする
/t
オプションを指定することで、ユーザーがキーを押すまでの秒数を指定することができます。
以下のサンプルコードでは、Y/N
の選択肢を 5 秒間表示し、選択されなかった場合はNo
と表示します。
@echo off
setlocal
choice /c YN /t 5 /d N /m "Yes or No?"
if %errorlevel% == 1 (
echo Yes
) else (
echo No
)
endlocal
上記のバッチファイルを実行すると、選択した場合は通常通り処理が実行されますが、5 秒間何も入力されなかった場合は、以下のように No
と表示されます。
練習問題
最後に確認テストに挑戦してみましょう。
テストはクライアント側で完結するため、サーバーにデータが送信されることはありません。