Windows2000では、callコマンドはラベルを指定することができます。書き方は
call :ラベル名
というように書きます。gotoコマンドと似ていますが少し違います。gotoコマンドは
ラベル名 を引数に取りますがcallコマンドは
:ラベル名 を引数にとります。制御を移したい場所にはgotoコマンドと同様に
:ラベル名
と書きます。
callコマンドで指定したラベルに制御を移した場合、指定したラベルの一行下に制御が移ってバッチファイルが実行され、
バッチファイルの一番下の行まで行くとcallコマンドの一行下に制御が戻ってきます。
そしてもう一度バッチファイルの一番下の行まで行くとバッチファイルが終了します。
≪callコマンドでラベル指定≫
@echo off |
echo 1 | ←① |
call :END | ←② |
echo 3 | ←③ |
goto :EOF | ←④ |
:END | ←⑤ |
echo 2 | ←⑥ |
上記の例でいうと、①で画面に「1」と表示されます。
②のcallコマンドで、⑤のラベル:ENDの一行下に制御が移ります。
⑥で画面に「2」と表示されます。
バッチファイルの一番下にきたので、callコマンドの一行下(③)に制御が戻されます。
③で画面に「3」と表示されます。
④でバッチファイルの終了をあらわす特別なラベル
:EOF がgotoコマンドのラベルに指定されてるので、ここでバッチファイルが終了します。
ただしcallコマンドでは、バッチファイルの終了を示すラベル:EOFは使えません。