Windowsのコマンドプロンプトで使えるCHOICEコマンドは、ユーザーに選択肢を提示し、入力を受け付ける便利なコマンドです。
特にバッチファイルを作成する際に、条件分岐やメニュー選択を簡単に実装できるため、スクリプトの自動化や運用管理に役立ちます。
本記事では、CHOICEコマンドの基本的な使い方から応用例までを詳しく解説します。バッチファイルの実践的なサンプルコードも紹介するので、業務の自動化や効率化を目指す方はぜひ参考にしてください。
【CHOICEコマンドとは?】
CHOICEコマンドの概要
CHOICEコマンドは、ユーザーに選択肢を提示し、その入力を受け取るためのコマンドです。
もともとMS-DOS時代に導入されたコマンドであり、現在のWindows環境(Windows 7以降)でも利用できます。
CHOICEコマンドの特徴
- 選択肢をカスタマイズ可能(例:Y/N選択、数字選択など)
- 選択結果をエラーコード(ERRORLEVEL)として返す
- バッチファイルでの条件分岐に便利
- 対話型スクリプトを簡単に作成できる
【CHOICEコマンドの基本構文】
CHOICEコマンドの書き方
基本的な構文は以下の通りです。
CHOICE /C [選択肢] /M "[メッセージ]"
/C [選択肢]
→ 選択肢を指定(デフォルトは YN)/M "[メッセージ]"
→ ユーザーに表示するメッセージを指定
例1:YES/NO選択の基本例
以下のコマンドは、「続行しますか?」と表示し、YまたはNの入力を待ちます。
swiftコピーする編集するCHOICE /C YN /M "続行しますか?(Y/N)"
ユーザーが Y
を押すと、ERRORLEVEL は 1
になり、N
を押すと 2
になります。
例2:数字での選択肢
CHOICE /C 123 /M "1:開始 2:設定 3:終了"
1
を選ぶと ERRORLEVEL=12
を選ぶと ERRORLEVEL=23
を選ぶと ERRORLEVEL=3
【CHOICEコマンドを使ったバッチファイルの活用例】
① Yes/No 選択で処理を分岐する
CHOICEを使って、処理を分岐するバッチファイルの例を紹介します。
@ECHO OFF
CHOICE /C YN /M "続行しますか?(Y/N)"
IF ERRORLEVEL 2 GOTO NO
IF ERRORLEVEL 1 GOTO YES
:YES
ECHO 続行します...
GOTO END
:NO
ECHO 処理を中止しました...
:END
【解説】
ERRORLEVEL
は大きい値から評価するため、IF ERRORLEVEL 2 から記述します。Y
が入力されるとYES
にジャンプ、N
が入力されるとNO
にジャンプします。
② メニュー選択式のバッチスクリプト
バッチファイルでメニューを表示し、選択肢によって異なる処理を実行する例です。
@ECHO OFF
CLS
ECHO 1: ファイルをバックアップ
ECHO 2: システム情報を表示
ECHO 3: 終了
CHOICE /C 123 /M "選択してください(1/2/3)"
IF ERRORLEVEL 3 GOTO EXIT
IF ERRORLEVEL 2 GOTO INFO
IF ERRORLEVEL 1 GOTO BACKUP
:BACKUP
ECHO バックアップ処理を実行中...
REM ここにバックアップ処理を書く
GOTO END
:INFO
ECHO システム情報を表示中...
SYSTEMINFO
GOTO END
:EXIT
ECHO プログラムを終了します
GOTO END
:END
【解説】
CHOICE /C 123 /M "選択してください(1/2/3)"
で1~3の選択肢を設定ERRORLEVEL
に応じて各処理へジャンプBACKUP
ではバックアップ処理、INFO
ではシステム情報を表示
【CHOICEコマンドの応用テクニック】
1. タイムアウト機能とデフォルト選択
CHOICEには、タイムアウト(/T)とデフォルト選択(/D) を設定するオプションがあります。
CHOICE /C YN /T 5 /D N /M "続行しますか?(Y/N)"
/T 5
→ 5秒後に自動選択/D N
→ デフォルトでN
を選択
【活用例】
ユーザーが一定時間操作しない場合、N
を自動選択することで処理をスムーズに進めることができます。
2. ループ処理と組み合わせる
以下の例では、間違った選択肢を入力した場合に再入力を促すバッチファイルを作成します。
@ECHO OFF
:LOOP
CHOICE /C 123 /M "1:開始 2:設定 3:終了"
IF ERRORLEVEL 3 GOTO EXIT
IF ERRORLEVEL 2 GOTO SETTINGS
IF ERRORLEVEL 1 GOTO START
ECHO 無効な選択肢です。もう一度選択してください。
GOTO LOOP
:START
ECHO 開始処理を実行します...
GOTO END
:SETTINGS
ECHO 設定メニューを開きます...
GOTO END
:EXIT
ECHO プログラムを終了します。
GOTO END
:END
【解説】
LOOP
に戻ることで無効な入力を防ぐEXIT
に移動すればプログラムを正常終了
【まとめ】
WindowsのCHOICEコマンドは、バッチファイルでユーザーの選択を受け取るために便利なコマンドです。
CHOICEコマンドのポイント
- 選択肢を指定できる(例:
CHOICE /C 123 /M "1:開始 2:設定 3:終了"
) ERRORLEVEL
を利用して条件分岐が可能- タイムアウト設定やループ処理と組み合わせることで応用範囲が広がる
バッチファイルを作成する際は、CHOICEコマンドを活用し、効率的なスクリプトを作成してみましょう!