[記事公開日]2025/10/06
⌨️ choiceコマンドの使い方|ユーザー入力を待ち受けて処理を分岐する方法
もくじ
はじめに
バッチファイルを使って自動処理を行う際、ユーザーに選択肢を提示して入力を待ち、その結果に応じて処理を分岐させたい場面があります。そのときに便利なのが choiceコマンド です。シンプルな入力待機を実現し、対話型のスクリプトを簡単に構築できます。
この記事では、choiceコマンドの基本操作から応用例、注意点までを詳しく解説します。
🛠 choiceコマンドとは?
-
役割:ユーザーに選択肢を提示し、入力されたキーに応じて分岐
-
用途:メニュー形式のバッチ、処理の実行確認、Yes/Noの分岐
-
特徴:入力を待つ間は処理が停止し、選択に応じてエラーレベルが設定される
📌 基本的な使い方
Y/N選択を待つ
choice /C YN /M "続行しますか? (Y/N)"
-
YまたはNの入力を待機 -
押されたキーに応じてエラーレベルが変化(Y=1, N=2)
複数選択肢を指定
choice /C 123 /M "処理を選んでください: 1=バックアップ 2=復元 3=終了"
-
1,2,3 のキーを待機し、それぞれ異なる処理に分岐可能
デフォルトタイムアウトを設定
choice /C YN /T 10 /D N /M "10秒以内に入力してください (Y/N)"
-
10秒以内に入力がなければデフォルトでNが選択される
🔍 エラーレベルの確認と分岐
choiceコマンドは押されたキーに応じて エラーレベル が設定されます。条件分岐は if errorlevel で行います。
choice /C YN /M "処理を続行しますか?"
if errorlevel 2 goto no
if errorlevel 1 goto yes
echo 終了
exit /b
:yes
echo 処理を続行します
exit /b
:no
echo 処理を中止しました
exit /b
-
errorlevelは大きい順に評価されるため、判定は必ず逆順に記述するのが鉄則
📚 応用的な使い方
簡易メニューシステム
:menu
choice /C 123 /M "1=バックアップ 2=復元 3=終了"
if errorlevel 3 goto end
if errorlevel 2 goto restore
if errorlevel 1 goto backup
:backup
echo バックアップを実行中...
goto menu
:restore
echo 復元を実行中...
goto menu
:end
echo 終了しました
-
ユーザーが入力するたびに処理を分岐し、終了を選ぶまでループ
タイムアウトを利用した自動選択
-
処理を放置した場合にデフォルトで自動的に進行させたい場合に有効
-
サーバーメンテナンスバッチなどでよく使われる
確認プロンプトに利用
choice /C YN /M "本当に削除しますか? (Y/N)"
-
誤操作を防止するためのダイアログ代わりに利用
📚 活用シーン
システム管理者
-
利用例:複数のメンテナンス処理をメニュー化し、ユーザーが選んで実行できるようにする
-
効果:運用効率が向上し、誤操作を減らせる
開発者
-
利用例:ビルドやデプロイ処理で環境を選択させる
-
効果:同一スクリプトで複数環境をサポート可能
一般ユーザー
-
利用例:バックアップや復元をバッチから簡単に実行
-
効果:直感的に操作できる
⚠️ 注意点
-
choiceの結果は エラーレベル で返されるため、条件判定は必ず逆順に行う -
選択肢の文字は大文字小文字を区別する(例:
Yとyは別扱い) -
Windows XP以前には標準搭載されておらず、古い環境では利用できない
-
タイムアウトを設定する場合は、意図しない自動選択を避けるため注意が必要
📊 まとめ表
| コマンド | 用途 | 活用例 |
|---|---|---|
| choice /C YN | Y/N入力を待機 | 確認ダイアログ |
| choice /C 123 | 数字キーで選択 | メニュー処理 |
| choice /T 10 /D N | タイムアウト付き選択 | 自動進行 |
| if errorlevel | エラーレベルによる分岐 | 処理制御 |
関連記事
さいごに
「choice」コマンドは、バッチ処理を対話的にするための鍵となるコマンドです。ユーザーの選択を取り入れることで、処理を柔軟に分岐させられます。
簡単なYes/No確認からメニューシステムまで幅広く応用可能であり、運用効率化や誤操作防止に役立ちます。バッチファイルを作成する際には、ぜひ組み込んでみてください。
