Batch 명령으로 여러개의 작업을 동시에 실행하고 작업이 완료될 때까지 기다렸으면 하는 경우가 있다.
다음 배치 명령을 사용하면 각 작업 실행 결과를 받아 올 수는 없지만,
여러 배치 명령어를 병렬로 실행하고 모두 완료될 때까지 기다렸다가 다음 명령을 실행할 수 있다.
설명
  - start "" 9>"%lock%" notepad.exe
    - notepad.exe가 실행되면 "9>xxx.lock" 사용자정의 Redirection을 사용하여 파일을 잠금 상태로 생성한다.
  - (call ) 9>"%lock%"
    - xxx.lock 파일을 실행하여 파일이 잠금 상태인지 확인한다.

@echo off
setlocal
set "lock=%temp%\wait%random%.lock"

:: Launch processes asynchronously, with stream 9 redirected to a lock file.
:: The lock file will remain locked until the script ends.
start "" 9>"%lock%%time:~-5%" notepad.exe
start "" 9>"%lock%%time:~-5%" notepad.exe

:Wait for all processes to finish (wait until lock files are no longer locked)
1>nul 2>nul ping /n 2 ::1
for %%F in ("%lock%*") do (
  (call ) 9>"%%F" || goto :Wait
) 2>nul

::delete the lock files
del "%lock%*"

:: Finish up
echo Done - ready to continue processing
2014/10/19 13:05 2014/10/19 13:05

덧글을 달아 주세요