How to Wait for Process to End Before Continueing With Batch File
- Use
/WAIT
to Wait for a Command to Finish Execution - Use the
TIMEOUT
Command to Delay the Execution - Use the
PAUSE
Command to Pause the Execution
There are multiple commands and installation processes in a Batch file that usually take some time to complete. But when a Batch file is run, it does not wait for a command process to finish; it executes all commands line by line.
It is important to make those commands wait for them to finish and then execute the next commands. For a process to wait until it is finished, we use the /wait
parameter with the START
command.
Instead of starting a command, if there is a need to insert delays in the Batch file for some time interval, we can use commands such as TIMEOUT
and PAUSE
to stop the execution of the next process for a short interval of time or until a key is pressed.
This tutorial illustrates different ways to wait for a command or a program to finish before executing the next command.
Use /WAIT
to Wait for a Command to Finish Execution
When we start a program in a Batch file using the START
command, we can wait until the program is finished by adding /wait
to the START
command. Even if there are multiple commands, /wait
can be used for each process to finish and move to the next one.
Also, the parameter /B
is used to stay in the same process without creating a new window. The START
command without the /B
parameter opens the program or command in a new window.
Wait for a Command to Finish Execution
For example, we need to wait for a command to finish execution before running the next one.
@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
Output:
Wait for the .exe
File to Finish Execution
Another example is where we need to run a .exe
file and wait until the execution is done completely.
@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
Output:
As soon as you close the .exe
file, the second program will begin execution. cmd /k
in the last line is used to prevent the command prompt from exiting after execution.
If there are multiple programs, you can use /WAIT
with each command to wait until the execution is finished. The START
command with the /WAIT
parameter doesn't have any timeout, i.e., it does not matter how long the process will take to finish; it will wait until the process is completed.
@echo off START /WAIT install1.exe START /WAIT install2.exe
The /WAIT
can only be used with the START
command. We can insert a time delay for other commands by using the TIMEOUT
and PAUSE
commands.
Use the TIMEOUT
Command to Delay the Execution
The TIMEOUT
command is used to delay the execution of a command for a few seconds or minutes. It can only be used in a Batch file.
The range for the TIMEOUT
command varies between -1 and 100000. If the delay is set to -1, it will act as a pause command to wait until a key is pressed.
As in the above command, we can replace the /wait
by inserting the TIMEOUT
command with the /t
parameter. The syntax for the TIMEOUT
command is given below:
TIMEOUT /t <time>
Let's take the above example and add a time delay of 30 seconds after the execution of the first program. The code for the same is shown below.
@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
Output:
After 30 seconds, the second program will begin execution. Also, if a user presses a key before the timeout, the second program will begin execution.
To prevent user keystrokes, use the /nobreak
parameter with the TIMEOUT
command. This will ignore any key presses by the user.
Although, you can stop the delay by pressing the Ctrl+C which will raise the errorlevel1.
Use the PAUSE
Command to Pause the Execution
The PAUSE
command is used to pause the execution of a batch file until a key is pressed. It is useful if the user wants to read the output text or wait until a process is finished.
However, there is no timeout, and it will only continue until the user presses a key.
@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
Output:
All the methods mentioned above work fine. If you use the START
command, it is recommended to use /wait
instead of delay commands as the process may take longer than specified.
schillertindiand1944.blogspot.com
Source: https://www.delftstack.com/howto/batch/batch-file-wait-for-command-to-finish/
0 Response to "How to Wait for Process to End Before Continueing With Batch File"
Post a Comment