[登録されているタグ]

[記事公開日]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」コマンドは、バッチファイルの流れを制御する上で非常に便利な構文です。シンプルながら、条件分岐や繰り返しを実現できるため、小規模から中規模のスクリプトで多用されます。

ただし、多用すると可読性を損ねる恐れがあるため、整理されたラベル設計や他の制御構文との併用が重要です。正しく使えば、柔軟で効率的なバッチ処理を実現できます。

すべてを開く | すべてを閉じる

ページ上部へ戻る