Windowsのバッチファイルで実行したい処理をユーザーに選ばせたい時などに活用できるコマンドchoiceの紹介です。どのバージョンから使えるのか分かりませんがWindows10とWindows11で使える事は確認しました。
使い方
次の様な使い方が出来ます。
1 2 |
@echo off choice /c 12 /m 続行しますか?(1:続行、2:中止): /n |
特徴
choiceコマンドには次の様な特徴があります。まさに選択肢から選んで貰うためにあるコマンドです。
- ユーザーが入力できるのは1文字だけです。
- 入力候補のキーしか受け付けません。
- SET /Pコマンドと違ってユーザーがEnterキーを押す必要がありません。
使えるオプション
choiceコマンドで使えるオプションです。
/C
ユーザーが入力できるキー(選択肢)を指定します。半角英数字などが使えます。
例1)choice /c 123
この場合1か2か3が選択肢となります。
例2)choice /c xyz
この場合xかyかzが選択肢となります。
/N
デフォルトの選択肢を表示しません。例えばこれを指定しない場合、前述のコマンドでは次の様に([1,2]の部分)表示されます。
大抵の選択肢の場合、1文字だけでは意味が分からないの/mオプションで各選択肢の説明を表示する必要があるのではないかなと思います。
/CS
選択肢で大文字・小文字を区別するようになります。
/T 数字
ユーザーが選択肢を選ぶまでのタイムアウト時間を秒で指定します。カウントダウンが表示されたりとかは無いです。
/D 文字
/Tオプションで指定した秒数の間入力が無かった場合に自動的に選択した事にするデフォルト値を指定します。
/M
ユーザーに表示するメッセージを指定します。
選択された値の確認方法
選択された値はerrorlevelに入ります。1番目の選択肢が選択されていたら1、2番目の選択肢が選択されていたら2が入ります。入力された文字が入るわけではありません。
例えば以下のバッチファイルを実行して3秒放置した場合の結果は次の様になります。
1 2 3 4 |
@echo off choice /c cs /m 続行しますか?(c:続行、s:中止): /T 3 /D c echo %errorlevel% pause |