バッチファイルでは、実行中にユーザーからの入力を受け取り、その内容に応じて処理を分岐させることができます。たとえば、処理内容を選択させたり、確認画面を設けたりといった柔軟なインタラクションが可能です。
この記事では、バッチファイルで選択メニューを作成し、入力値によって処理を切り替える実装方法について、実用的なコード例とともに解説します。
1. set /p を使った入力受付と条件分岐
set /p
はユーザーからの入力を受け取り、変数に格納するコマンドです。
@echo off
echo ==============================
echo 処理を選択してください:
echo 1. バックアップ実行
echo 2. ログの削除
echo 3. 処理を終了
echo ==============================
set /p choice=番号を入力してください(1-3):
if "%choice%"=="1" goto BACKUP
if "%choice%"=="2" goto DELETE
if "%choice%"=="3" goto END
echo 無効な選択です。
goto END
:BACKUP
echo バックアップ処理を開始します…
:: 実際のバックアップ処理を書く
goto END
:DELETE
echo ログファイルを削除します…
:: 実際の削除処理を書く
goto END
:END
echo 処理を終了しました。
pause
ポイント:
goto ラベル名
で処理をジャンプ- 未入力や不正な入力へのフォールバック対応が重要
2. choice コマンドを使ったメニュー実装(数字キー対応)
choice
コマンドを使うと、キー入力に対するメニュー選択をより直感的に実装できます。
@echo off
echo ========== メニュー ==========
echo [1] レポート出力
echo [2] データ更新
echo [3] 終了
echo ==============================
choice /c 123 /n /m "操作を選んでください(1-3): "
if errorlevel 3 goto END
if errorlevel 2 goto UPDATE
if errorlevel 1 goto REPORT
:REPORT
echo レポートを出力中...
:: レポート処理
goto END
:UPDATE
echo データベースを更新中...
:: 更新処理
goto END
:END
echo 終了します。
pause
errorlevel は「上から順に判定」されるため、必ず大きい値から先に書くことが重要です。
3. 入力値に応じたファイル処理の実装例
応用として、ユーザーが入力したファイル名をもとに処理を行う例です。
@echo off
set /p filename=処理対象のファイル名を入力してください(例: test.txt):
if exist "%filename%" (
echo ファイル "%filename%" を処理中...
type "%filename%"
) else (
echo ファイルが存在しません。
)
pause
このように、ファイルの存在チェックと条件分岐を組み合わせることで、より実用的な処理が可能になります。
まとめ
バッチファイルでユーザー入力に応じた処理を実装することで、次のような効果が得られます。
- 柔軟な分岐処理(処理内容の選択・条件による振り分け)
- 確認や誤操作防止(選択制による意図確認)
- メンテナンス効率の向上(処理の見通しが良くなる)
シンプルな処理でも、ユーザーとのインタラクションを取り入れることでより強力なツールになります。日々の作業効率化や業務の自動化に、ぜひ活用してみてください。