Windows バッチ ファイルでコマンドの実行が完了するまで待機する
バッチ ファイルには複数のコマンドとインストール プロセスがあり、通常は完了するまでに時間がかかります。 ただし、バッチ ファイルを実行すると、コマンド プロセスが完了するまで待機しません。 すべてのコマンドを 1 行ずつ実行します。
これらのコマンドが完了するのを待ってから、次のコマンドを実行することが重要です。 プロセスが終了するまで待機するには、START コマンドで /wait パラメータを使用します。
コマンドを開始する代わりに、ある時間間隔でバッチ ファイルに遅延を挿入する必要がある場合は、TIMEOUT や PAUSE などのコマンドを使用して、次のプロセスの実行を短時間停止することができます。 またはキーが押されるまで。
このチュートリアルでは、次のコマンドを実行する前に、コマンドまたはプログラムが終了するまで待機するさまざまな方法を示します。
/WAIT を使用して、コマンドの実行が終了するのを待ちます
START コマンドを使用してバッチ ファイルでプログラムを開始する場合、START コマンドに /wait を追加することで、プログラムが終了するまで待機できます。 複数のコマンドがある場合でも、/wait を使用して各プロセスを終了し、次のプロセスに移動できます。
また、パラメータ /B は、新しいウィンドウを作成せずに同じプロセスにとどまるために使用されます。 /B パラメータのない START コマンドは、プログラムまたはコマンドを新しいウィンドウで開きます。
コマンドの実行が完了するまで待機する
たとえば、次のコマンドを実行する前に、コマンドの実行が完了するまで待機する必要があります。
@echo off
echo starting first program.
START /B /WAIT cmd /c "C:\Users\Aastha Gas Harda\Desktop\testfile1.bat" > output.txt
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

出力:

.exe ファイルの実行が完了するまで待ちます
もう 1つの例は、.exe ファイルを実行し、実行が完全に完了するまで待機する必要がある場合です。
@echo off
echo starting first program.
START /B /WAIT JRuler.exe
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

出力:

.exe ファイルを閉じるとすぐに、2 番目のプログラムが実行を開始します。 最後の行の cmd /k は、実行後にコマンド プロンプトが終了しないようにするために使用されます。
複数のプログラムがある場合は、各コマンドで /WAIT を使用して、実行が完了するまで待機できます。 /WAIT パラメータを指定した START コマンドにはタイムアウトがありません。つまり、プロセスが完了するまでにかかる時間は関係ありません。 プロセスが完了するまで待機します。
@echo off
START /WAIT install1.exe
START /WAIT install2.exe
/WAIT は START コマンドでのみ使用できます。 TIMEOUT および PAUSE コマンドを使用して、他のコマンドの時間遅延を挿入できます。
TIMEOUT コマンドを使用して実行を遅らせる
TIMEOUT コマンドは、コマンドの実行を数秒または数分遅らせるために使用されます。 バッチ ファイルでのみ使用できます。
TIMEOUT コマンドの範囲は -1 から 100000 の間です。遅延が -1 に設定されている場合、キーが押されるまで待機する一時停止コマンドとして機能します。
上記のコマンドのように、TIMEOUT コマンドに /t パラメータを挿入することで、/wait を置き換えることができます。 TIMEOUT コマンドの構文は次のとおりです。
TIMEOUT /t <time>
上記の例を取り上げて、最初のプログラムの実行後に 30 秒の時間遅延を追加してみましょう。 同じコードを以下に示します。
@echo off
echo starting first program.
START /B JRuler.exe
TIMEOUT /t 30
echo The first program is executed successfully.
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

出力:

30 秒後、2 番目のプログラムが実行を開始します。 また、ユーザーがタイムアウト前にキーを押すと、2 番目のプログラムが実行を開始します。

ユーザーのキーストロークを防ぐには、TIMEOUT コマンドで /nobreak パラメータを使用します。 これにより、ユーザーがキーを押しても無視されます。
ただし、Ctrl+C を押すことで遅延を停止できます。これにより、エラーレベル 1 が上がります。
PAUSEコマンドを使用して実行を一時停止する
PAUSE コマンドは、キーが押されるまでバッチ ファイルの実行を一時停止するために使用されます。 ユーザーが出力テキストを読みたい場合や、プロセスが完了するまで待ちたい場合に便利です。
ただし、タイムアウトはなく、ユーザーがキーを押すまで続行されます。
@echo off
echo starting first program.
START /B cmd /c "C:\Users\Aastha Gas Harda\Desktop\testfile1.bat" > output.txt
echo The first program is executed successfully.
PAUSE
START /B systeminfo >> output.txt
echo All the programs are executed successfully
cmd /k

出力:

上記のすべての方法は正常に機能します。 START コマンドを使用する場合は、遅延コマンドの代わりに /wait を使用することをお勧めします。これは、プロセスが指定よりも長くかかる可能性があるためです。