choiceコマンドで指定したキーの入力受け取る

choiceコマンドの基本的な使い方

choiceコマンドは、ユーザーからのキー入力を受ける機能です。

単純にchoiseコマンドのみだとYESもしくはNOを選ぶことになります。

実際にやってみましょう。

コード

choice

「Y」か「N」の二択を受け付けるだけになってますよね。

ユーザーが「Y」もしくは「N」を選ぶと、プログラムが進んでいきます。

「Y」、「N」以外のキーが入力されても入力ができないので、先へ進みません。

YとNは打てるけど、それ以外は打てないね

プログラム内で「Y」、「N」のどちらが入力されたか知りたいときは、変数「errorlevel」を使用します。

変数「errorlevel」は最後に処理した内容が自動的に入る特殊な変数です。

変数「errorlevel」に代入されている数字は下記の通り

  • 「Y」が入力された場合、「1」が代入
  • 「N」が入力された場合、「2」が代入

以下、変数「errorlevel」への確認したコマンドを示します。

コード:選択を「Y」

choice

Y(入力)

echo syorigo=%errorlevel%

コード:選択を「N」

choice

N(入力)

echo syorigo=%errorlevel%

このようにerrorlevelの変数にchoiceで選んだ内容が組み込まれています。 

また、1回目で「Y」を選んだ後に、「N」で選択すると、errorlevelの変数が「2」に上書きされていることが分かります。

choiceコマンドで入力キーを指定する方法

入力を受け付けるキーを指定することもできます。

「/c」オプションを使用しすることで、入力キーを指定できます。

入力を受け付けるキーをこちらで指定する

choice /c:[任意のキー]

[任意のキー]はアルファベット、数字の一文字であればなんでも指定可能です。

以下のバッチファイル(choice_xyz.bat)では「x」、「y」、「z」のどれかの入力を指定しています。

コード

choice /c:xyz

echo syorigo=%errorlevel%

では、実際にやってみましょう。

「errorlevel」下記のとおりの結果になりましたね

  • 「x」が入力▶「1」
  • 「y」が入力▶「2」
  • 「z」が入力▶「3」

このように、「errorlevel」に代入される数字は左から「1」、「2」、「3」となります。

 4つ以上になっても、「1」「2」「3」「4」「5」・・・となります。

choiceコマンドで入力キーの選択肢を表示させない方法

先程の内容で下記の選択肢はいらなくないですか?

[x,y,z ]?

この内容を消したい時は「/n」オプションを指定すると、入力キーの選択肢を表示しません。つまり、コマンドプロンプト上には何も表示しません。

実際にやってみましょう。

コード

choice /n /c:xyz

自分が作ったバッチファイルだと、これでもいいですが、他の人が使う時はこれではわかりません。

そんな時は「/m」オプションを併用することで、コメントを表示させることができます。

choiceコマンドでコメントを表示する

「/m」オプションは入力画面に指定したコメントを表示が可能です。

使用方法は「/m」オプションの後にコメント文を入れます。

コメント文をつけるコード

choice /m [コメント文]

実際にやってみましょう。

コード

choice /c:xyz /n /m アルファベットで一番最後の文字は何でしょうか?

このように「/n」オプションで入力キーの候補表示を消し、「/m」オプションでコメントを表示させます。

「set/p ui=」のコードで入力者に入力させて、変数を設定するやり方もあります。choiceコマンドはerrorlevel変数と組み合わせることで、入力者から入力してもらい処理を行うことも可能です。それぞれのコマンドの違いについては下記の記事を参考にしてください。

choiceのオプション一覧

オプション説明
/c任意のキー 任意のキーを指定。デフォルトは YN 
/n任意のキーのコマンドスクリプトへの非表示にする
/cs大文字と小文字を区別するデフォルトは区別しない。
/mコメント コメントを表示する
/t秒数 入力までの時間を指定する
(時間経過した後、/dオプションで指定の値が選択される。)
/d指定値 /tオプションの時間経過後、を指定値を表示する
(/tオプションの指定が必要。)

コメント

タイトルとURLをコピーしました