バッチファイルがあります。
bat1.bat
bat2.bat
しかし、bat1の終わりで停止します
手がかりはありますか?
call
を使用:
call bat1.cmd
call bat2.cmd
デフォルトでは、別のバッチファイルからバッチファイルを実行しただけでは、制御は呼び出し側に戻されません。そのため、call
を使用する必要があります。
基本的に、次のようなバッチがある場合:
@echo off
echo Foo
batch2.cmd
echo Bar
その後、それは出力されます
Foo
こう書けば
@echo off
echo Foo
call batch2.cmd
echo Bar
ただし、出力されます
Foo
Bar
batch2
の終了後、プログラム制御は元のバッチファイルに戻されるためです。
これは、bat1.batが異常終了した場合(exitを呼び出すなど、最後まで実行するだけでなく)に発生する可能性があり、新しいcmd.exeを使用して各batファイルを実行することにより、これを回避できます。
start /b /wait bat1.bat
start /b /wait bat2.bat
Batファイルにコマンドが続かない場合、最後の1つは省略できます。
バッチファイルを順番に実行する場合は、各ファイルの最後に「start bat 1.bat」を配置する必要があります。
複数の.exeファイルを一度に実行するには、最初に.batファイルを作成してから、以下のようにすべての.exeファイルを追加する必要があります。
D:\Data\Feed.exe Books.xml
D:\Data\Feed.exe Mobile.xml
D:\Data\Feed.exe Clothes.xml
そして、something.batとして保存し、cmdで実行します。
他に探すべきもの:
call
コマンドを使用して複数のバッチファイルを呼び出す場合にも同様の問題がありましたが、元の.batファイルに制御が渡されませんでした。
バッチファイルの最後にexit
コマンドがあり、元の.bat
ファイルに戻ってコマンドを完了する前にDOSウィンドウを閉じていることがわかりました。