[記事公開日]2025/10/06
🏷️ gotoコマンドの使い方|ラベルジャンプでバッチ処理を制御する方法
もくじ
はじめに
バッチファイルを使って複雑な処理を作る際、条件によって処理を飛ばしたい、繰り返したい、といった場面がよくあります。そのときに活躍するのが gotoコマンド です。gotoを利用することで、指定したラベルにジャンプして処理を続行でき、バッチ処理の流れを自由に制御することが可能です。
この記事では、gotoコマンドの基本的な使い方から応用、注意点や活用例までを詳しく解説します。
🛠 gotoコマンドとは?
-
役割:バッチファイル内の指定ラベルに処理を移動する
-
用途:条件分岐、繰り返し、処理スキップなど
-
特徴:シンプルながら強力な制御構文。ifコマンドなどと組み合わせると実用的
📌 基本的な使い方
ラベルを定義
:label
-
コロン(:)で始まる行がラベルとして認識される
指定ラベルへ移動
goto label
-
:labelの位置にジャンプして処理を継続する
実例
echo 処理開始
goto step2
:step1
echo ステップ1を実行
goto end
:step2
echo ステップ2を実行
:end
echo 処理終了
-
実行すると「処理開始 → ステップ2 → 処理終了」と進む
🔍 応用的な使い方
if文と組み合わせる
set /P ANSWER=処理を続行しますか? (Y/N):
if /I "%ANSWER%"=="Y" goto continue
echo 中止しました
goto end
:continue
echo 続行します...
:end
echo 完了
-
条件に応じて処理を分岐させる例
繰り返し処理に利用
set /A COUNT=1
:loop
echo %COUNT% 回目の処理
set /A COUNT=%COUNT%+1
if %COUNT% LEQ 5 goto loop
echo 繰り返し終了
-
1~5回まで処理を繰り返す
複数の分岐に対応
set /P MENU=1:バックアップ 2:復元 3:終了 >
if "%MENU%"=="1" goto backup
if "%MENU%"=="2" goto restore
goto end
:backup
echo バックアップ処理を実行
goto end
:restore
echo 復元処理を実行
goto end
:end
echo 終了しました
-
簡易メニューを構築
📚 活用シーン
バッチ処理を段階的に制御
-
利用例:エラーが発生した場合に終了ラベルへ飛ばす
-
効果:柔軟なエラーハンドリングが可能
簡易メニュー作成
-
利用例:選択肢に応じて異なる処理を実行
-
効果:ユーザーインターフェースを強化
繰り返しタスクの実装
-
利用例:ループ処理をgotoで実装
-
効果:制御構造のないバッチでも繰り返しを実現
⚠️ 注意点
-
gotoは無条件ジャンプであり、コードの可読性を下げる可能性がある
-
複雑な分岐やループをgotoで多用すると、スパゲッティコード化しやすい
-
無限ループに陥る可能性があるため、必ず終了条件を用意する
-
for文やcallと組み合わせて整理すると、より読みやすいスクリプトになる
📊 まとめ表
| コマンド | 用途 | 活用例 |
|---|---|---|
| :label | ラベル定義 | 処理の目印 |
| goto label | 指定ラベルにジャンプ | 分岐・スキップ |
| if 条件 goto label | 条件付きジャンプ | 処理の分岐 |
| goto loop | 繰り返し処理 | ループ実装 |
関連記事
さいごに
「goto」コマンドは、バッチファイルの流れを制御する上で非常に便利な構文です。シンプルながら、条件分岐や繰り返しを実現できるため、小規模から中規模のスクリプトで多用されます。
ただし、多用すると可読性を損ねる恐れがあるため、整理されたラベル設計や他の制御構文との併用が重要です。正しく使えば、柔軟で効率的なバッチ処理を実現できます。
