Waiting for parallel batch scripts

前端 未结 4 1711
盖世英雄少女心
盖世英雄少女心 2020-11-28 12:09

I have 4 batch files. I want to run one.bat and two.bat at once, concurrently. After completion of these two batch files, three.bat an

4条回答
  •  迷失自我
    2020-11-28 12:58

    This is easily done using a much simplified version of a solution I provided for Parallel execution of shell processes. Refer to that solution for an explanation of how the file locking works.

    @echo off
    setlocal
    set "lock=%temp%\wait%random%.lock"
    
    :: Launch one and two asynchronously, with stream 9 redirected to a lock file.
    :: The lock file will remain locked until the script ends.
    start "" cmd /c 9>"%lock%1" one.bat
    start "" cmd /c 9>"%lock%2" two.bat
    
    :Wait for both scripts to finish (wait until lock files are no longer locked)
    1>nul 2>nul ping /n 2 ::1
    for %%N in (1 2) do (
      ( rem
      ) 9>"%lock%%%N" || goto :Wait
    ) 2>nul
    
    ::delete the lock files
    del "%lock%*"
    
    :: Launch three and four asynchronously
    start "" cmd /c three.bat
    start "" cmd /c four.bat
    

提交回复
热议问题