Windowsコマンド虎の巻

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:バッチプログラムやラベル呼び出す