Start multiple tasks in parallel and wait for them in windows?
How do I execute some tasks in parallel in batch script and wait for them?
command1;
# command3, command4 and command5 should execute in sequence say task1
# command6, command7 and command8 should execute in sequence say task2
# both task1 and task2 should run independently
command3; command4; command5 | command6; command7; command8;
# should execute only after the above parallel tasks are completed
command9;
As a proof of concept I tried something like but it is not working:
echo "Starting"
start /wait wait20.bat
start /wait wait40.bat
echo "Finishing"
wait20.bat
looks like:
echo "starting 20 seconds job"
timeout 20
echo "finishing 20 seconds job"
What am I doing wrong?
I think this is the simplest way to do that:
command1
(
start "task1" cmd /C "command3 & command4 & command5"
start "task2" cmd /C "command6 & command7 & command8"
) | pause
command9
Further details in the comments below this answer.
Here's an example how it can be done with tasklist and process window titles:
launcher.cmd
@echo off
for /l %%a in (1,1,5) do start "worker%%a" cmd /c worker.cmd & timeout /t 1 >nul
:loop
timeout /t 2 >nul
tasklist /v /fi "imagename eq cmd.exe" /fo csv | findstr /i "worker" >nul && goto :loop
echo Workers finished
worker.cmd
@echo off
set /a wait=2 + ( %RANDOM% %% 5 )
echo waiting for %wait%...
timeout /t %wait% >nul
echo I'm done!
timeout /t 2 >nul
I'm using tasklist /v /fo csv
to get titles.