【bat】バッチファイルで入力値に応じた処理を実行する方法|選択メニュー・分岐処理の実装例

【bat】バッチファイルで入力値に応じた処理を実行する方法|選択メニュー・分岐処理の実装例 bat

バッチファイルでは、実行中にユーザーからの入力を受け取り、その内容に応じて処理を分岐させることができます。たとえば、処理内容を選択させたり、確認画面を設けたりといった柔軟なインタラクションが可能です。

この記事では、バッチファイルで選択メニューを作成し、入力値によって処理を切り替える実装方法について、実用的なコード例とともに解説します。

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

このように、ファイルの存在チェックと条件分岐を組み合わせることで、より実用的な処理が可能になります。

まとめ

バッチファイルでユーザー入力に応じた処理を実装することで、次のような効果が得られます。

  • 柔軟な分岐処理(処理内容の選択・条件による振り分け)
  • 確認や誤操作防止(選択制による意図確認)
  • メンテナンス効率の向上(処理の見通しが良くなる)

シンプルな処理でも、ユーザーとのインタラクションを取り入れることでより強力なツールになります。日々の作業効率化や業務の自動化に、ぜひ活用してみてください。