goto
gotoは、バッチプログラム内で指定した箇所(ラベル)へ制御を飛ばすコマンドです。
解説
gotoは単独のコマンドとしては使用せず、バッチプログラムの中で使用します。
構文
- (構文)
- GOTO :ラベル GOTO /?
ラベルの先頭には、「:」を付けます。
オプション | 説明 |
---|---|
/? | コマンドのヘルプを表示する |
サンプル
例1)GOTOを使ったサンプル1
(sample1.bat)
@echo off
echo 出力1です。
goto :LBL
echo 出力2です。
:LBL
echo 出力3です。
(実行例)
C:¥>sample1.bat
出力1です。
出力3です。
「出力2です。」はGOTOによりスキップされます。
例2)GOTOを使ったサンプル2
(sample2.bat)
@echo off
if "%1" == "" (
goto LABEL01
) else (
goto LABEL02
)
:LABEL01
echo 引数に何も指定されていません
goto :EOF
:LABEL02
echo 引数に%1が指定されました
goto :EOF
(実行例)
C:¥>sample2.bat
引数に何も指定されていません
C:¥>sample2.bat hoge
引数にhogeが指定されました
「:EOF」へGOTOすると制御が最後に移るのでバッチを終了させられます。
例3)GOTOをFOR文のように使うサンプル
(sample3.bat)
@echo off
set i=0
:LBL
echo %i%
set /a i+=1
if %i% lss 5 goto LBL
(実行例)
C:¥>sample3.bat
0
1
2
3
4
最終行でカウンターが5未満の場合にGOTOで処理を戻すことで、FOR文のような動きとなっています。
備考
- ラベル名は任意の名称を指定できます。
- 「goto :EOF」とすると実行中のプログラムの最後まで移動(=バッチの終了)ができます。
(:EOFラベルはデフォルトで定義済みなので、明示的にラベル定義する必要はありません。) - 使用されていないラベルが存在しても特に問題はないため、コメントとしても使用されます。
(例)ラベルを使用したコメント
:この行はコメントです。 - ラベルを呼ぶコマンドにはgotoの他に callコマンドでも呼ぶことができます。
違いはgotoは処理が戻ってきませんが、callは処理が戻ってくるという違いがあります。
関連項目
- call:バッチプログラムやラベル呼び出す