目次
ラベルと「goto」コマンドの使い方
ラベルと「goto」コマンドを使うことで、バッチファイル内の好きな場所で移動することができます。ラベルが目印になり、「goto」コマンドで指定したラベルの場所に処理を飛ばします。
以下に使い方を示します。
1 2 3 4 5 |
goto :[ラベル名] [途中のコード] :[ラベル名] |
「goto」コマンドの後に、引数として「:[ラベル名]」を指定することで、[途中のコード]を飛ばして「:[ラベル名]」の行まで移動できます。
例として、以下のバッチファイル(label_goto_test.bat)を作成しました。
1 2 3 4 5 6 7 8 9 10 |
@echo off rem 「test」ラベルまで移動 goto :test echo ここは通りません。 rem 「test」ラベル :test echo ここまで飛んできました。 |
4行目の「goto」コマンドで9行目のラベル「:test」まで移動しまします。したがって、6行目の「echo」コマンドによる出力は表示されないはずです。
以下、実行結果です。
予想通りの結果が得られました。
特別なラベル「:eof」
通常、「goto」コマンドで指定したラベルはどこかに記述しておかなければいけません。当然ですが、プログラムがどこへ飛べばいいか分からないからです。
例えば、以下のようなバッチファイル(nolabel_goto_test.bat)はエラーになります。
1 2 3 4 5 |
@echo off rem 「test」ラベルまで移動…どこに「:test」がある? goto :test echo ここは通りません。 |
以下、実行結果です。
しかし、「:eof」というラベルだけは特別です。「:eof」は、「end of file」の頭文字を取ったもので、ファイルの最後に移動するためのラベルです。したがって、「goto :eof」と指定すればバッチファイルの終了を意味し、ラベルが存在しなくてもエラーは起きません。
上記のバッチファイルのラベル「:test」を「:eof」に変えて実行してみましょう(nolabel_goto_eof.bat)。
1 2 3 4 5 |
@echo off rem 「eof」ラベルまで移動 → バッチファイルの終了 goto :eof echo ここは通りません。 |
以下、実行結果です。
何も起こらず、バッチファイルが終了しました。
ラベルと「goto」コマンドは、よくサブルーチンを定義するときに使います。サブルーチンとは、処理をまとめておくことで、プログラムを分かりやすくしたり何度も同じ処理を書く手間を省いたりする役割を持ったものです。詳しくは「バッチファイルでサブルーチンを使用する -やりたいことから検索-」をご覧下さい。
コメント