call - 他バッチファイルの実行
バッチファイルの活用範囲が広がっていくと、プログラムの中で似た処理を行うバッチファイルが複数存在するようなケースはよく起こります。
そのような場合、同じ処理を複数のバッチファイルに記述するのは非効率的ですし、メンテナンスの工数も増えてしまいます。
また、別々で作成した複数のバッチファイルを、スケジュール実行用のバッチファイルから呼び出すといった操作は、バッチファイルを使う上でよくあるケースです。
このページでは、バッチファイルから他のバッチファイルを実行する方法について、基本的な使い方からオプションの設定方法まで分かり易く説明しています。
call コマンドの基本的な使い方
バッチファイルから他のバッチファイルを呼び出す際は、call
コマンドを使用します。
call
コマンドの基本的な使い方は以下の通りです。
call <バッチファイル名> [...パラメータ]
オプションは存在せず、バッチファイル名とそのバッチファイルに渡すパラメータのみを指定します。
call
コマンドを使用すると、指定したバッチファイルが実行され、完了後に呼び出し元のバッチファイルに戻ります。
call コマンドの具体例
他のバッチファイルの実行
例として、直接実行するcaller.cmd
と、呼び出されるcallee.cmd
を用意します。
caller.cmd
は以下のようになります。
@echo off
echo caller.cmdを開始しました。
call callee.cmd
echo caller.cmdが終了しました。
ファイルの文字コードがShift-JIS
となっていることを確認してください。
同様に、callee.cmd
は以下のようになります。
@echo off
echo callee.cmdを開始しました。
echo callee.cmdが終了しました。
上記のように設定した上で、caller.cmd
を実行すると、以下のように表示されます。
caller.cmd
が実行されると、call
コマンドによってcallee.cmd
が実行され、callee.cmd
が完了した後、caller.cmd
に戻っています。
このように、call
コマンドを使用すると、呼び出したバッチファイルは、呼び出されたバッチファイルが完了するまで待機状態となります。
引数を渡してバッチファイルを実行する
次に、バッチファイルに対して引数を渡して実行する方法について説明します。
直接実行するcaller.cmd
と、呼び出されるcallee.cmd
を用意します。
caller.cmd
は以下のようになります。
@echo off
echo caller.cmdを開始しました。
call callee.cmd 1
call callee.cmd 2
echo caller.cmdが終了しました。
callee.cmd
は以下のように記述します。
@echo off
echo callee.cmdを開始しました。
echo %1回目の実行です。
echo callee.cmdが終了しました。
上記のように設定した上で、caller.cmd
を実行すると、以下のように表示されます。
並列処理を実現したい場合
バッチファイルを呼び出す際、呼び出したバッチファイルの完了を待たずに、次の処理を実行したい場合もあるんじゃないでしょうか。
call
コマンドを使用した場合、呼び出したバッチファイルの完了を待ってから次の処理を実行します。
もし完了を待たずに次の処理を実行したい場合は、start
コマンドを使用します。
start
コマンドについては、以下のページで詳しく説明しています。