callコマンドは、バッチファイル中から他のバッチファイルを呼び出して実行し、実行が終了すれば再び呼び出したバッチファイルに制御を戻すコマンドです。書き方は
call バッチファイル名
というように書きます。呼び出したいバッチファイル名は拡張子が
.bat もしくは
.cmd でないといけません。
呼び出したいバッチファイルがカレントディレクトリとは違うディレクトリに存在する場合は絶対パスか
相対パスで指定しします。バッチファイル中でカレントディレクトリがC:\batだとして、C:\test.batを指定したい場合
≪相対パスで指定する場合≫
call ..\test.bat
≪絶対パスで指定する場合≫
call C:\test.bat
というように指定します。バッチファイルに対して引数を渡したい場合は置き換えパラメータを使用することが出来ます。置き換えパラメータについては
こちらを見てください。
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は使えません。