Shell

도스 배치 파일(batch process file command) 명령어에서, 임시로 wait(일정 시간동안 기다리게 하는 명령) 명령어 구현하기(sleep) 기다림

디버그정 2009. 10. 6. 08:11
출처) http://hallang.tistory.com/248

도스 배치 파일(batch process file command) 명령어에서, 임시로 wait(일정 시간동안 기다리게 하는 명령) 명령어 구현하기(sleep)
기다림

- 참고한 사이트 : http://malektips.com/dos0017.html (Implementing the WAIT Command in a Batch File)

1. MS-DOS, 윈도우 95, 윈도우 98, 윈도우 98 SE : choice 명령어의 활용

choice는 MS-DOS 거의 말기 버전에 추가되었던 외부명령어입니다. 사용자로부터 Y/N 등의 선택지 입력을 받아, ErrorLeve로 리턴해주는 명령어인데, 이 명령어에 "일정 시간 기다리다가, 자동으로 기본값(초기값/default value)를 선택한다"는 옵션이 있죠. 이 옵션을 활용하면 wait 명령처럼 써먹을 수 있습니다.

- 단점 : 윈도우 XP, NT 계열에는 이 명령어가 없어졌습니다.

choice   /t:n,[원하는 시간(초)]   >   nul

/t:n,[원하는 시간(초)] 옵션은, 원하는 시간동안 기다린 후, 자동으로 "N"을 입력한다는 겁니다.
> nul 리다이렉션(redirection)을 통해서 choice 명령어가 화면에 안보이도록 합니다.


2. 윈도우 XP, NT 계열 : ping 명령어의 활용

이건 거의 꼼수에 가까운 건데... 수많은 기본 명령어 중에서, ping 이라는게 비교적 간단하게 시간을 보낼 수 있는 명령이라서 선택했나봅니다. 해당 링크에서는 -w 옵션으로 마치 1000 ms(1초) 간격을 만들 수 있는 것처럼 나와있는데, -w 옵션은 단순히 '핑 타임 아웃 시간 제한'일 뿐, 1초간 기다리게 하는 옵션은 아닙니다.

ping   127.0.0.1   -n 10   >   nul

127.0.0.1 주소(자기 자신)으로 10회의 핑을 보내는 겁니다. 대충 10초 가량 기다리게 할 수 있군요.
-n [원하는 횟수] 위 예제에서는 10회로 지정했지만, 더 적거나 많게 지정할 수 있겠죠. 1회가 대충 1초라고 생각하면 될 것 같습니다.

위 팁을 제시한 사이트에서는, ping 작업을 활용한 꼼수에 가깝기 때문에, 정확하고 정교한 다중 작업이 필요할때는 사용하지 마라고 권고하는 군요.

XP와 윈도우 2003의 경우에 Windows 2003 Resource Kit을 추가로 받아 설치하면, sleep 명령어가 생긴다고도 합니다만, 추가로 프로그램을 설치해야하는 번거로움이 있군요.
- 참고 : Batch sleep command ( http://malektips.com/xp_dos_0002.html )

'Shell' 카테고리의 다른 글

SHGetFileInfo로 파일 속성 알기  (1) 2009.10.10
cmd.exe 명령어  (0) 2009.10.06
Shell Links  (0) 2008.09.13
Shell Library  (1) 2008.09.13
Shell Extensions  (1) 2008.09.13
Shell Namespace  (0) 2008.09.13