Windows 배치 파일에서 명령 실행이 완료될 때까지 대기
Batch 파일에는 일반적으로 완료하는 데 시간이 걸리는 여러 명령과 설치 프로세스가 있습니다. 그러나 Batch 파일이 실행될 때 명령 프로세스가 완료될 때까지 기다리지 않습니다. 모든 명령을 한 줄씩 실행합니다.
이러한 명령이 완료될 때까지 기다린 후 다음 명령을 실행하는 것이 중요합니다. 프로세스가 완료될 때까지 대기하려면 START
명령과 함께 /wait
매개변수를 사용합니다.
명령을 시작하는 대신 일정 시간 동안 Batch 파일에 지연을 삽입해야 하는 경우 TIMEOUT
및 PAUSE
와 같은 명령을 사용하여 짧은 시간 동안 다음 프로세스의 실행을 중지할 수 있습니다. 또는 키를 누를 때까지.
이 자습서는 다음 명령을 실행하기 전에 명령이나 프로그램이 완료될 때까지 기다리는 다양한 방법을 보여줍니다.
/WAIT
를 사용하여 명령 실행 완료 대기
START
명령을 사용하여 Batch 파일에서 프로그램을 시작할 때 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
파일이 실행을 마칠 때까지 기다립니다.
또 다른 예는 .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
파일을 닫는 즉시 두 번째 프로그램이 실행되기 시작합니다. 마지막 줄의 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초 후에 두 번째 프로그램이 실행되기 시작합니다. 또한 사용자가 시간 초과 전에 키를 누르면 두 번째 프로그램이 실행되기 시작합니다.
사용자 키 입력을 방지하려면 TIMEOUT
명령과 함께 /nobreak
매개변수를 사용하십시오. 이것은 사용자가 누르는 키를 무시합니다.
하지만 Ctrl+C를 누르면 errorlevel1이 높아져 지연을 멈출 수 있습니다.
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
를 사용하는 것이 좋습니다.