start - 他バッチファイルの実行
別々で作成した複数のバッチファイルを、スケジュール実行用のバッチファイルから呼び出すといった操作は、バッチファイルを使う上でよくあるケースです。
また、バッチファイルから特定のexe
ファイルを実行するといった操作も、よくあるんじゃないでしょうか。
このページでは、バッチファイルから他のプログラムやバッチファイルを実行するstart
コマンドについて、基本的な使い方からオプションの設定方法まで分かり易く説明しています。
start コマンドの基本的な使い方
start
コマンドの基本的な使い方は以下の通りです。
start [タイトル] [実行するプログラムのパス] [プログラムに渡すパラメータ]
より詳細に表すと以下のようになりますが、多くの場合は上記のように、実行するファイルのタイトル、実行するファイル名、実行するファイルに渡すパラメータのみを指定します。
start [タイトル] [/d <実行するプログラムのパス>] [/i] [{/min | /max}] [{/separate | /shared}] [{/low | /normal | /high | /realtime | /abovenormal | /belownormal}] [/node <NUMA node>] [/affinity <HEX>] [/wait] [/b] [/machine <x86|amd64|arm|arm64>] [追加のコマンド・プログラム] [プログラムに渡すパラメータ]
start
コマンドを使用すると、指定したパスのプログラムが実行されますが、実行されたプログラムの完了を待たずに、次の処理を実行します。
start コマンドの具体例
他のバッチファイルの実行
例として、直接実行するcaller.cmd
と、呼び出されるcallee.cmd
を用意します。
caller.cmd
は以下のようになります。
@echo off
echo caller.cmdを開始しました。
start callee.cmd
echo caller.cmdが終了しました。
ファイルの文字コードがShift-JIS
となっていることを確認してください。
同様に、callee.cmd
は以下のようになります。
@echo off
echo callee.cmdを開始しました。
rem 5秒待機
timeout /t 5 /nobreak >nul
echo callee.cmdが終了しました。
上記のように設定した上で、caller.cmd
を実行すると、以下のようコマンドプロンプトのウィンドウがもう一つ表示され、それぞれのバッチファイルが実行されます。
これらが実行される順番を並べると、以下のようになります。
caller.cmdを開始しました。
callee.cmdを開始しました。
caller.cmdが終了しました。
callee.cmdが終了しました。
caller.cmd
が終了した後にcallee.cmd
が終了しています。
caller.cmd
は瞬時に終了するような処理ですが、callee.cmd
では、timeout
コマンドを使用して 5 秒間待機しています。
このように、start
コマンドを使用すると、呼び出したバッチファイルの完了を待たずに、次の処理を実行します。
引数を渡してバッチファイルを実行する
次に、バッチファイルに対して引数を渡して実行する方法について説明します。
直接実行するcaller.cmd
と、呼び出されるcallee.cmd
を用意します。
@echo off
echo caller.cmdを開始しました。
start callee.cmd 1
start callee.cmd 2
echo caller.cmdが終了しました。
@echo off
echo callee.cmdを開始しました。
echo %1回目の実行です。
rem 5秒待機
timeout /t 5 /nobreak >nul
echo callee.cmdが終了しました。
上記のように設定した上で、caller.cmd
を実行すると、2 つ新しいウィンドウが表示され、それぞれのバッチファイルが実行されます。
結果としては以下のようになります。
呼び出したプログラムの完了を待つ
バッチファイルを呼び出す際、呼び出したバッチファイルの完了を待って、次の処理を実行したい場合は、start
コマンドの/wait
オプションを使用します。
/wait
オプションを使用することで、呼び出したプログラムの完了を待ってから、次の処理を実行します。
もしくは、call
コマンドを使用することでも、呼び出したプログラムの完了を待ってから、次の処理を実行することができます。
call
コマンドについては、以下のページで詳しく説明しています。