web-dev-qa-db-ja.com

バッチファイルを順番に実行する

Windowsでバッチファイルを順番に実行する方法をすべてお聞きしたいと思います。私が試してみました :

start /w batchfile_1.bat 
start /w batchfile_2.bat
..
start /w batchfile_n.bat

しかし、次のプロセスに進む前に、前の.batファイルプロセスを手動で(たとえば、クリックして)閉じる必要があります。以前の.batプログラムを毎回手動で閉じることなく、これを自動的に行う解決策はありますか?

どうもありがとう。

12
user1634603

私はこの質問の解決策をチェックします: 複数のバッチファイルを実行

  • リンクの回答から引用。

通話を使用:

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

17
Ishikawa

STARTの使用に夢中であれば、EXITコマンドでバッチファイルを終了させることができます。これにより、startコマンドで作成されたウィンドウが閉じます。

@echo off
 .
 .
:: Inspired coding
 .
 .
exit
3
James K

わかりませんが、あなたのコメントに基づいて、STARTコマンドのシーケンスを実行すると、次のことが起こっているようです。

  1. START /Wコマンドが呼び出され、バッチファイルを開始します。

  2. バッチファイルが実行を開始し、プログラムを実行します。

  3. バッチファイルは終了し、そのコンソールウィンドウは開いたままですが、プログラムは実行を続けます。

  4. コンソールウィンドウが開いたままなので、バッチファイルの実行に使用されたSTART /Wコマンドはまだ実行中です。

  5. プログラムが終了するまで待ってから、コンソールウィンドウを閉じ、次のSTART /Wコマンドが呼び出され、すべてが繰り返されます。

ここで、順次実行するすべてのバッチファイルの最後にEXITを配置すると、バッチスクリプトの完了後にコンソールウィンドウが閉じて、対応するSTART /Wが終了するため、状況が悪化します。コマンドを使用して、バッチスクリプトによって呼び出されたプログラムがまだ実行されている場合でも、別のコマンドを実行します。その結果、バッチスクリプト(または、むしろ、それらによって実行されるプログラム)は、順次ではなく同時に実行されます。

これがまったく解決できる場合は、START /Wコマンドを移動して、バッチファイルが実行する(すべての)コマンドの前にあるすべてのバッチファイルに入れて、終了を待機しないようにする必要があると思います。つまり、batchfile_1.batprogram.exeを実行する場合は、コマンドラインをSTART /W program.exeに変更します。他のバッチファイルの他の関連コマンドについても同様です。

0
Andriy M