web-dev-qa-db-ja.com

Windowsコマンドライン環境で、複数のバッチファイルをシリアルで実行する方法

バッチファイルがあります。

bat1.bat
bat2.bat

しかし、bat1の終わりで停止します

手がかりはありますか?

22
Nick

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の終了後、プログラム制御は元のバッチファイルに戻されるためです。

41
Joey

これは、bat1.batが異常終了した場合(exitを呼び出すなど、最後まで実行するだけでなく)に発生する可能性があり、新しいcmd.exeを使用して各batファイルを実行することにより、これを回避できます。

start /b /wait bat1.bat
start /b /wait bat2.bat

Batファイルにコマンドが続かない場合、最後の1つは省略できます。

2
x4u

バッチファイルを順番に実行する場合は、各ファイルの最後に「start bat 1.bat」を配置する必要があります。

1
john calhoun

複数の.exeファイルを一度に実行するには、最初に.batファイルを作成してから、以下のようにすべての.exeファイルを追加する必要があります。

  D:\Data\Feed.exe Books.xml
  D:\Data\Feed.exe Mobile.xml
  D:\Data\Feed.exe Clothes.xml

そして、something.batとして保存し、cmdで実行します。

1
Riya Ken

他に探すべきもの:

callコマンドを使用して複数のバッチファイルを呼び出す場合にも同様の問題がありましたが、元の.batファイルに制御が渡されませんでした。

バッチファイルの最後にexitコマンドがあり、元の.batファイルに戻ってコマンドを完了する前にDOSウィンドウを閉じていることがわかりました。

1
JIm L