Categories: Windows

指定したラベルへ制御を移動するGOTOコマンド(バッチファイル)

バッチファイルで特有のコマンドとして、指定したラベルの位置に移動することのできるGOTOコマンドがあります。本記事では、このGOTOコマンドの使い方について紹介します。

基本的な記述方法

GOTOコマンドを利用すると、指定した飛びたい位置のラベルに飛ぶことができます。

goto [ラベル名]

ラベルは以下のように「:」を頭に付けることで作成することができます。

:[ラベル名]
(処理内容)

GOTOコマンドを用いたバッチファイルの例

以下に例を見ていきましょう。以下のバッチの中にはLabelAとLabelBの二つのラベルがあります。バッチファイルが起動すると、4行目で「goto LabelB」が実行されて9行目の:LabelBの位置に飛ぶことになります。

@echo off

echo Start
goto LabelB

:LabelA
echo LabelA

:LabelB
echo LabelB

echo Finish

pause

実行結果は下記の通りです。LabelAが飛ばされていることがわかります。

以下のように4行目のgoto LabelBをgoto LabelAに変更するとどうなるでしょうか。

@echo off

echo Start
goto LabelA

:LabelA
echo LabelA

:LabelB
echo LabelB

echo Finish

pause

LabelAの位置に移動した後は、その位置から下に順次コードが実行されます。すなわち、LabelAに飛んだ場合は、その下にあるLabelBも実行される点には注意が必要です。

GOTOコマンドでバッチファイルを終了させる(goto :EOF)

GOTOコマンドを利用する一つの実例として、処理の途中でIF文などの判定結果に基づいてバッチファイルを終了させることができます。

バッチファイル内に記述することなく、デフォルトで使えるラベルとして「:EOF」が定義されています。:EOFはバッチファイルの最後を表しており、「:EOF」に到達するとバッチファイルが終了します。よって「goto :EOF」と記述すればバッチファイルは強制的に終了します。

つまり、以下のように記述すれば4行目でバッチファイルが強制終了します。

@echo off

echo Start
goto :EOF
echo Finish

pause
Haruoka