윈 도 우 배치파일 작업 완료 후 즉시 Exit하지 않고 몇 초 지난 후에 자동으로 Exit...
2022.12.09 21:24
윈도우OS의 명령 프롬프트에서 수행하는 이른바 "배치파일"의 형식을 아주 간략하게 표현하면
대체로 다음과 같습니다.
--------------------------------------------------------------------------------------
@Echo off
"구체적인 작업을 수행하는 명령의 내용"
pause (또는 exit)
--------------------------------------------------------------------------------------
여기서, 마지막에 pause를 명령하면 상기한 작업을 수행하기를 완료한 후에 곧바로 자동으로 명령 프롬프트 창을 닫지 않고
사용자가 직접 키보드의 키를 눌러 신호를 입력해야 명령 프롬프트 창이 닫힙니다.
그와 반면에, exit를 명령하면 상기한 작업의 수행을 완료한 직후에 곧바로 자동으로 명령 프롬프트 창을 닫습니다.
그런데, 저는 pause와 exit의 전형적인 명령이 아닌 다른 걸 해 보고 싶은데요.
그런 의미에서 제 질문은 다음과 같습니다.
구체적인 작업의 수행을 완료한 직후에 곧바로 명령 프롬프트 창이 자동으로 닫히지 않고 약간의 시간이 지난 후에 자동으로 닫히게 하고 싶습니다.
예를 들어, 배치 작업이 완료되고 5초가 지난 후에 명령 프롬프트 창이 자동으로 닫히게 하는 명령은 어떻게 해야 할까요?
이게 pause 명령과 다른 점은 pause 명령의 경우 사용자가 수동으로 키보드의 키를 눌러야 명령 프롬프트 창이 닫히는 반면,
제 질문은 사용자가 수동으로 키보드의 키를 누르지 않고도 5초가 지나면 무조건 자동으로 명령 프롬프트 창이 닫히도록 한다는 겁니다.
고수분들의 도움을 부탁 드리겠습니다.
꾸벅
댓글 [14]
-
히이이잌 2022.12.09 21:26
-
feynman 2022.12.09 21:56
그렇군요.
알려 주셔서 고맙습니다.
그런데, timeout 명령 아랫줄에 exit를 쓰지 않아도 입력한 시간이 지나니 명령 프롬프트 창이 닫히네요?
exit를 반드시 써야 하나요?
-
메리아 2022.12.09 21:29 -
-
feynman 2022.12.09 22:01
그렇군요.
위의 분과 다른 방법까지도 추가로 알려 주셔서 고맙습니다.
실제로 시간을 재어 보니, 말씀하신대로 -n 스위치에 입력한 숫자에서 정확하게 1이 빠진 시간정도 걸리네요.
위의 분 말씀까지 종합하면
범용성을 위해서는 ping 명령으로 쓰는 게 가장 적절하겠네요.
위의 분께도 다시 질문드렸지만
ping 명령 다음 아랫줄에 exit를 추가로 넣어야 하나요?
말씀하신 걸 그대로 넣고 exit를 안 썼는데도 지정한 시간이 지나면 명령 프롬프트 창이 자동으로 닫히는 걸 확인은 했습니다만...
확인을 위해 추가로 질문 드려 봅니다.
-
메리아 2022.12.10 10:27 -
-
feynman 2022.12.10 18:36
추천을 안 드릴래야 안 드릴 수가 없군요.
겉보기에 간단해 보이는 명령어 하나도 충분히 알고 써야 한다는 사실을 님을 통해 새삼 다시 배웁니다.
귀중한 시간 내어 친절히 설명해 주셔서 고맙습니다.^^
-
네오이즘 2022.12.10 19:05
외부 파일으로 call로 불러올 경우를 대비해서,
이런경우 EXIT/b를 써주면 됩니다.
call로 불려저 온 경우는 해당 파일만 종료되고 call이 아닌경우는 exit와 같이 종료됩니다.
-
ViArPl 2022.12.09 23:42
TIMEOUT [/T] timeout [/NOBREAK]
설명:
이 유틸리티는 지정한 시간(초) 동안 또는 아무 키나 누를 때까지
기다리게 하는 timeout 매개 변수를 받습니다. 또한 키 누름을
무시하게 하는 매개 변수도 받습니다.
매개 변수 목록:
/T timeout 기다릴 시간(초)을 지정합니다.
유효한 범위는 -1에서 99999초까지입니다.
/NOBREAK 키 누름을 무시하고 지정된 시간을 기다립니다.
/? 이 도움말 메시지를 표시합니다.
참고: -1 timeout 값을 지정하면 시간 제한 없이 아무 키나 누를 때까지 기다립니다.
예:
TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1
timeout을 사용하는 방법도 있습니다.
-
feynman 2022.12.10 00:20
좋은 정보 알려 주셔서 고맙습니다.
-
밀물 2022.12.10 00:11
exit 명령이 없더라도 더이상 수행할 명령이 없으면 cmd 창은 종료가 됩니다. 그래도 정확성을 위해 exit를 입력해 주는 걸 추천합니다.
-
feynman 2022.12.10 00:20
그렇군요. 가르쳐 주셔서 고맙습니다.^^
-
와로 2022.12.10 14:36
보통은 timeout /t 3 /nobreak > nul이나 ping -n 3 127.0.0.1 >nul을 많이들 쓰실겁니다 (3초후에 닫힘)
근데 위 timeout명령줄에 있는 nobreak은 간단한 스크립트에서 대기 시간을 짧게 주고 리디렉션하는건 상관 없는데
대기 시간을 길게 줘야 하는 조건에선 되돌리고 싶어도 말그대로 브레이크를 못걸고 무조건 완료될때까지 기다려야해서 비추합니다
그냥 timeout /t 3 > nul을 쓰던지 갠적으론 ping -n 3 127.0.0.1 >nul 이게 젤 무난하더군요
echo 완료되었습니다.& ping -n 3 127.0.0.1 >nul
메리아님 말씀처럼 어차피 닫히는데 굳이 exit로 더블 체크할 필요 없습니다
윈11 설치할때 우클릭 메뉴 토글할려고 간단하게 만들어 놓은건데 참고해보세요 (2번 제거) Windows_11_우클릭_메뉴_전환.7z
-
feynman 2022.12.10 18:47
그렇군요.
위의 메리아님과 함께 와로님의 설명까지 해서 이해가 좀 더 깊어지게 된 것 같습니다.
고맙습니다. 추천도 함께 드립니다.
그건 그렇고, 대단하십니다.
우클릭 메뉴 전환 배치파일을 개인적으로 만드시기까지 하실 정도면 대단하시네요.
저는 StartAllBack과 같은 써드파티의 은총(?)을 받고 있습니다.
-
와로 2022.12.10 20:49
필요는 삽질의 어머니죠 ㅋㅋ
pe가 아니라면 timeout 명령이 가장 쉽고 편하고, pe에선 보통 ping 명령을 대신 사용합니다.