배치 파일 일시 중지 및 대기 명령: 스크립트 흐름을 제어하는 ​​방법

Baechi Pail Ilsi Jungji Mich Daegi Myeonglyeong Seukeulibteu Heuleum Eul Jeeohaneun Bangbeob



Windows의 일괄 스크립팅에서 개발자는 일시 중지 또는 대기를 도입하는 다양한 기술이나 방법을 사용하여 스크립트의 흐름을 제어할 수 있습니다. 'pause' 및 'wait' 명령은 배치 파일의 흐름을 제어하는 ​​두 가지 방법입니다. 'pause' 명령은 '계속하려면 아무 키나 누르십시오...'라는 메시지를 표시하면서 배치 파일의 실행을 중지합니다. 사용자가 키를 누를 때까지 배치 파일을 실행할 수 없습니다. 배치 파일의 실행은 대기 명령에 표시된 시간(초) 동안 일시 중지됩니다.

배치 파일 일시 중지 명령

배치 파일의 'pause' 명령은 명령줄에 메시지를 표시하는 동안 배치 파일 실행을 중지합니다. 사용자가 키를 누를 때까지 배치 파일이 실행되지 않습니다. 다음 실행을 중지하는 명령이 도움이 됩니다. 배치 파일을 직접 실행하고 원하는 출력이 화면에 나타나는 것을 보는 것이 좋습니다.







'pause' 명령의 구문은 다음과 같습니다.



정지시키다

사용자에게 입력하라는 메시지 표시

다음 배치 스크립트의 'pause' 명령은 사용자가 이 배치 파일을 실행할 때 '계속하려면 아무 키나 누르십시오...'라는 메시지를 표시합니다. 배치 파일이 'dir' 명령으로 이동하기 전에 사용자는 키를 눌러야 합니다.



@에코 꺼짐

rem 이 배치 파일은 사용자가 키를 누를 수 있도록 일시 중지됩니다.

echo 안녕하세요. PAUSE 명령 데모에 오신 것을 환영합니다.

echo 일시 중지 후에도 스크립트 실행이 계속됩니다.

정지시키다

rem 이 배치 파일은 다음 명령으로 계속됩니다.

에코 감사합니다!





사용자가 키보드를 사용하여 아무 키나 누르면 다음 일괄 처리가 계속됩니다.



배치 파일 대기 명령

제공한 코드는 메모장과 그림판이라는 두 가지 프로그램을 여는 배치 파일입니다. 코드는 다음과 같습니다:

@에코 꺼짐

echo 첫 번째 프로그램을 시작합니다.

START /B /WAIT notepad.exe

echo 메모장이 백그라운드에서 성공적으로 열렸습니다.

echo 두 번째 프로그램을 시작합니다.

START /WAIT mspaint.exe

echo 그림판이 성공적으로 열렸습니다.

cmd /k

첫 번째 줄인 '@echo off'는 배치 파일이 실행되는 명령을 표시하지 않도록 합니다.

사용자에게는 'echo Starting First Program'이라는 두 번째 줄에 의해 첫 번째 프로그램이 시작되고 있다는 알림만 제공됩니다.

세 번째 줄인 'START /B /WAIT notepad.exe'는 백그라운드 창에서 메모장 프로그램을 열고 계속하기 전에 완료될 때까지 기다립니다. '/B' 스위치는 START 명령에 백그라운드 창에서 프로그램을 실행하도록 지시하고, '/WAIT' 스위치는 계속하기 전에 프로그램이 끝날 때까지 기다리도록 START 명령에 지시합니다.

네 번째 줄은 에코 메모장을 읽습니다. 메모장이 백그라운드에서 성공적으로 열리면 사용자에게 메시지만 알립니다.

다섯 번째 줄인 'echo Starting Second Program'은 단순히 두 번째 프로그램이 시작되고 있다는 메시지를 사용자에게 표시합니다.

여섯 번째 줄인 'START /WAIT mspaint.exe'는 백그라운드 창에서 그림판 프로그램을 열고 계속하기 전에 프로그램이 끝날 때까지 기다리지 않습니다.

일곱 번째 줄인 'echo The Paint is Opened 성공적으로'는 단순히 그림판이 성공적으로 열렸다는 메시지를 사용자에게 표시합니다.

여덟 번째 줄인 'cmd /k'는 새 명령 프롬프트 창을 열고 현재 명령 프롬프트 창을 열어 둡니다.

사용자 정의 지연을 위한 루프 사용

일괄 처리에서 사용자 정의 지연을 위해 루프를 사용할 수 있습니다. 예는 다음과 같습니다.

이 예에서는 이 배치 파일이 실행될 때 첫 번째 메시지가 사용자에게 표시됩니다. 첫 번째 메시지는 'for' 루프가 시작되면 다시 한 번 표시됩니다. timeout 명령은 두 번째 메시지를 표시하기 전에 배치 파일을 1초 동안 중지합니다. 그런 다음 총 10번의 반복 후에 최종 메시지가 표시됩니다.

@에코 꺼짐

echo 루프를 사용한 지연 시연

for /l  %%i in (1,1,10) do (

시간 초과 /t 1 /nobreak > nul

echo 이 메시지는 %%i초 후에 표시됩니다.

)

echo 이 메시지는 10초 지연을 표시합니다.

지연 시간 초과 사용

배치 파일의 시간 초과 명령은 미리 결정된 시간(초) 동안 배치 파일 실행을 일시 중지합니다. 구문은 다음과 같습니다.

시간 초과 /t [/nobreak]

'/t' 스위치는 대기 시간을 초 단위로 지정합니다. '/nobreak' 스위치는 사용자가 지연을 깨기 위해 키를 누르는 것을 비활성화합니다.

'timeout' 명령을 사용하여 다음을 수행할 수 있습니다.

  • 일정 시간 동안 배치 파일의 실행을 연기합니다.
  • 사용자가 배치 파일 작업을 중단하지 않도록 방지
  • 사용자가 계속하기 위해 키를 누를 필요가 없도록 하여 보다 사용자 친화적인 환경을 만듭니다.

예를 들어 다음 배치 파일은 10초 동안 일시 중지됩니다.

@에코 꺼짐

echo 안녕하세요. 10초 지연 후 스크립트 실행이 계속됩니다.

시간 초과 /t 10

에코 감사합니다!

다음 스크린샷에서 볼 수 있듯이 타이머가 실행 중이며 사용자가 아무 키나 눌러 'timeout' 명령을 중단할 때까지 기다리고 있습니다. 사용자가 아무 키나 누르면 프로세스가 중지되고 배치 파일의 다음 명령으로 이동합니다.

다음 스크린샷의 사용자는 5초 후에 'timeout' 명령을 중단하여 'Thank you!'라는 메시지가 표시됩니다. 메시지:

다음 스크린샷은 'Thank You!' 메시지가 어떻게 표시되는지 보여줍니다. 최종 사용자가 시간 초과 지침을 중단하지 않으면 메시지가 화면에 인쇄되는 데 10초가 걸립니다.

다음은 최종 사용자가 배치 파일 프로세스를 중단하는 것을 중지하는 중단 없는 스위치를 포함하도록 수정된 업데이트된 코드입니다.

@에코 꺼짐

rem 이 배치 파일은 10초 동안 일시 중지됩니다.

echo 안녕하세요. 10초 지연 후 스크립트 실행이 계속됩니다.

시간 초과 /t 10 /nobreak

rem 10초 후에 이 명령이 프롬프트 화면에 표시됩니다.

에코 감사합니다!

이전 코드의 출력은 다음과 같습니다.

사용자가 'CTRL+C' 명령을 사용하는 경우 명령줄에서는 Y 또는 N을 입력하라는 메시지를 표시합니다. 사용자가 Y를 클릭하면 이 일괄 작업이 중지됩니다.

'pause', 'wait' 및 'timeout' 명령은 스크립트의 흐름을 제어하는 ​​방법입니다. “pause” 명령을 사용하면 스크립트 실행이 일시 중지되고, “timeout” 명령을 사용하면 미리 정해진 시간 동안 스크립트가 중지됩니다.

흐름 제어를 위한 조건문 사용

조건문은 특정 상황에 따라 스크립트 흐름을 수정하는 데 사용되는 가장 일반적으로 실행 가능한 기술입니다. 조건이 참인지 거짓인지에 따라 'if' 문은 두 가지 코드 실행 중 하나를 수행합니다. 'if' 문은 다음과 같이 구성됩니다.

if <조건> else

예:

메모장이나 원하는 텍스트 편집기를 열고 세 번째 줄에서 inputValue 변수의 값을 1로 초기화하는 다음 코드를 작성합니다. 그런 다음 런타임에 'if' 문을 사용하여 inputValue 변수의 값이 1, 2 또는 3인지 확인합니다. 그렇다면 해당 메시지가 명령줄 화면에 인쇄됩니다. 그렇지 않은 경우 최종 메시지가 표시됩니다. 'if'로 알려진 조건문에서는 변수의 inputValue가 1, 2 또는 3인지 확인합니다. 그렇다면 두 코드 블록 중 하나가 실행됩니다. 조건이 true이면 조건문은 아무 작업도 수행하지 않습니다.

@에코 꺼짐

rem 이 스크립트는 값 1, 2, 3에 대해 inputValue 변수를 테스트합니다.

입력값=1로 설정

'%inputValue%'=='1'인 경우(

에코 입력 값은 1입니다.

) 그렇지 않은 경우 '%inputValue%'=='2' (

에코 입력 값은 2입니다.

) 그렇지 않은 경우 '%inputValue%'=='3' (

echo 입력 값은 3입니다.

) 또 다른 (

echo 변수 inputValue가 1, 2 또는 3이 아닙니다.

)

산출:

결론

명령, 루프 및 'if'와 같은 조건문을 사용하여 Windows 운영 체제에서 스크립트 흐름을 제어하고 프로세스를 자동화할 수 있습니다. 개발자는 'timeout' 또는 'ping'을 활용하여 'pause' 명령으로 스크립트 실행을 중지하거나 지연을 추가할 수 있습니다. 배치 스크립팅에는 기본 제공되는 'switch' 문이 없지만 'if' 및 'else if' 표현식을 사용하여 이를 시뮬레이션할 수 있습니다. 이러한 스크립트가 적절한 컨텍스트에서 의도한 대로 작동하는지 확인하려면 테스트가 중요합니다. 이러한 스크립트는 자동화, 시스템 관리 및 파일 조작에 유용합니다.