mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Thursday, September 07, 2006

배치파일] Yes / No 선택 묻기, 도스의 CHOICE 명령 대용, 사용자 입력 받기 - DOS-Windows Batch File


배치파일을 작성하다 보면, 사용자에게 무엇을 선택하게 해야 할 때가 있습니다. 즉 "예/아니오(Yes/No)" 등을 물어보아야 할 때가 있습니다.

가령 새 파일을 만들 때, 기존의 파일을 덮어쓸지 물어보아야 안전할 것입니다.

MS-DOS 6에는 CHOICE.COM 또는 CHOICE.EXE 라는 명령어 파일이 있었습니다. 그래서 CHOICE 명령을 사용하여, 사용자에게 질문을 할 수 있었는데, 윈도우2000/XP 이상의 운영체제는 CHOICE 명령이 없었습니다.

물론 CHOICE 같이 간단한 명령은 'C언어'로 간단히 만들어서 쓸 수도 있겠지만, 그러면 호환성의 문제도 있고 하여, 다음과 같이 순수한 배치 파일로 구현해 보았습니다.

Windows 2000 / Windows XP 이상의 운영체제에는, set 명령에 /p 라는 옵션이 있습니다. 환경변수를 만들 때, 사용자에게 값을 실시간으로 지정하게 하는 것입니다.

예를 들어,
set /p YN=(Y/N)?

이렇게 하면, YN 이라는 환경변수에 어떤 값을 넣을지 직접 키보드로부터 입력을 받기 위해 대기합니다. 또한 동시에 (Y/N)? 이런 문자열을 출력하여 이해를 돕습니다.

사용자에게 Y 나 N 중의 하나를 입력하게 하고, 만약 엉뚱한 키를 누르면 다시 입력을 받도록 루프를 돌리면 됩니다.


yesNo.bat 이라는 예제인데 getKey.bat 으로 이름을 정해도 적당할 것입니다.
@echo off
setlocal


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:LOOP
set /p YN=(Y/N)?

if /i "%YN%" == "y" goto YES
if /i "%YN%" == "n" goto NO

goto LOOP
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


:YES
echo YES
goto QUIT

:NO
echo NO
goto QUIT




:QUIT

Y/N y/n 의 대소문자를 구분하지 않도록, if문에 /i 옵션을 주었습니다.



yesNo.bat 실행 결과


D:\Z>yesNo.bat
(Y/N)?
(Y/N)?
(Y/N)?
(Y/N)?t
(Y/N)?
(Y/N)?
(Y/N)?y
YES
D:\Z>
D:\Z>
D:\Z>yesNo.bat
(Y/N)?
(Y/N)?
(Y/N)?
(Y/N)?
(Y/N)?B
(Y/N)?
(Y/N)?n
NO
D:\Z>yesNo.bat
(Y/N)?
(Y/N)?
(Y/N)?N
NO
D:\Z>yesNo.bat
(Y/N)?
(Y/N)?Y
YES
D:\Z>




Y/N이 아닌, 긴 문자열을 입력받는 방법은 여기에 있습니다: ▶▶ 배치파일] 사용자 문자열 입력받기, 입력을 변수에 저장: DOS-NT Batch File Input String




tag: batch
배치파일 | DOS CMD BATCH .BAT

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top