gotoコマンドは指定したラベルにバッチファイルの制御を移します。
≪gotoコマンドの使い方≫
| goto END | ←① |
| ...(実行文などがあって) | ←② |
| :END | ←③ |
| ←④ |
上記のように書きます。①のgotoコマンドで、制御を移したいラベル名をENDに指定します。
制御を移したい行(この場合④)の一つ上の行に
コロン(:) をつけて
END と書くと④に制御が移ります。
したがって②部分の実行文は実行されません。
ラベルはバッチファイルの一番上から探されて、見つかればそのラベルの次の行にバッチファイルの制御を移します。もしバッチファイル中に指定されたラベルが2つ以上書いてある場合は、一番上に書いてあるラベルにバッチファイルの制御が移ります。
≪ラベルが二つある場合≫
| @echo off |
| goto END | ←①´ |
| echo 実行しない | |
| :END | ←②´ |
| echo 実行する | |
| goto :EOF | ←③´ |
| :END | ←④´ |
| echo 実行しない | |
①´でgotoコマンドによりラベルENDに制御を移します。
②´と④´にラベルENDがありますが、gotoコマンドはラベルをバッチファイル中の上から順に探すので②´でラベルが見つかります。④´のラベルは無視されます。
ラベルの一行下に制御が移るのでechoコマンドが実行され、コマンドプロンプトに「実行する」と表示されます。
③´の:EOFはバッチファイルの末尾を意味する特殊なラベルなので、ここでバッチファイルが終了します。バッチファイルを終了したい場合は、
goto :EOF
と書けば終了できると覚えておくと便利です。