Windowsでバッチファイルを順番に実行する方法をすべてお聞きしたいと思います。私が試してみました :
start /w batchfile_1.bat
start /w batchfile_2.bat
..
start /w batchfile_n.bat
しかし、次のプロセスに進む前に、前の.batファイルプロセスを手動で(たとえば、クリックして)閉じる必要があります。以前の.batプログラムを毎回手動で閉じることなく、これを自動的に行う解決策はありますか?
どうもありがとう。
私はこの質問の解決策をチェックします: 複数のバッチファイルを実行
通話を使用:
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の終了後、プログラムの制御は元のバッチファイルに戻されるからです。
START
の使用に夢中であれば、EXIT
コマンドでバッチファイルを終了させることができます。これにより、start
コマンドで作成されたウィンドウが閉じます。
@echo off
.
.
:: Inspired coding
.
.
exit
わかりませんが、あなたのコメントに基づいて、START
コマンドのシーケンスを実行すると、次のことが起こっているようです。
START /W
コマンドが呼び出され、バッチファイルを開始します。
バッチファイルが実行を開始し、プログラムを実行します。
バッチファイルは終了し、そのコンソールウィンドウは開いたままですが、プログラムは実行を続けます。
コンソールウィンドウが開いたままなので、バッチファイルの実行に使用されたSTART /W
コマンドはまだ実行中です。
プログラムが終了するまで待ってから、コンソールウィンドウを閉じ、次のSTART /W
コマンドが呼び出され、すべてが繰り返されます。
ここで、順次実行するすべてのバッチファイルの最後にEXIT
を配置すると、バッチスクリプトの完了後にコンソールウィンドウが閉じて、対応するSTART /W
が終了するため、状況が悪化します。コマンドを使用して、バッチスクリプトによって呼び出されたプログラムがまだ実行されている場合でも、別のコマンドを実行します。その結果、バッチスクリプト(または、むしろ、それらによって実行されるプログラム)は、順次ではなく同時に実行されます。
これがまったく解決できる場合は、START /W
コマンドを移動して、バッチファイルが実行する(すべての)コマンドの前にあるすべてのバッチファイルに入れて、終了を待機しないようにする必要があると思います。つまり、batchfile_1.bat
がprogram.exe
を実行する場合は、コマンドラインをSTART /W program.exe
に変更します。他のバッチファイルの他の関連コマンドについても同様です。