배치 파일에서 사용자 입력 받아들이기
게시일: 2005/03/28 | 글쓴이: doa | 18753 번 | 프린트 | 메일

DOS 시절에는 배치 파일에서 사용자 입력을 받아들이기위해 별도의 프로그램을 사용했다. DOS에서는 배치 프로그래밍이라고 하지만 기능이 워낙 미약해서 별도의 프로그램을 쓰지않고는 조금 복잡한 작업은 할 수 없기때문이다.

XP에는 4NT의 배치 언어처럼 파일 관리자를 만들 수 있을 만큼은 아니라고 해도 DOS에 비해 훨씬 강화된 배치언어를 제공한다. 따라서 예전에는 별도의 유틸리티를 사용해야만 가능한 작업도 XP의 배치언어로 쉽게 작성할 수 있다. 배치 파일에서 사용자의 입력을 받아들이는 방법은 아주 간단하다.

set /p in=딩동댕 프로그램을 설치하시겠습니까(Y/N)?:   


은 단순히 %in%이라는 환경 변수에 "딩동댕 프로그램을 설치하시겠습니까(Y/N)?: "라는 문장을 할당하는 것처럼 보이지만 사실 이 문장은 화면에 "딩동댕 프로그램을 설치하시겠습니까(Y/N)?: "라는 메시지를 출력하고 사용자가 입력한 키값을 %in%이라는 환경 변수에 저장하는 명령(/p 옵션)이다.

따라서 이 명령을 이용하면 쉽게 사용자의 입력을 받아들일 수 있다. 다음은 사용자의 입력을 받아들여, 사용자의 입력이 N이면 배치파일의 실행을 중지하고 Y면 사용자가 입력한 데이타를 출력하는 간단한 배치 파일이다.

[userinput.cmd]
@echo off
REM 변수 지역화
setlocal

:message REM 메시지를 화면에 출력한 후 사용자 입력을 %in%에 저장 REM /p 옵션: varible=message message를 화면에 출력하고 REM 사용자 입력을 %in%에 저장 set /p in=딩동댕 프로그램을 설치하시겠습니까(Y/N)?:__

REM %in%가 N면 변수 지역화를 해제하고 end로 점프 REM /i 옵션: 대소문자 무시 if /i [%in%]==[N] endlocal & goto end

REM %in%가 널이면 message을 다시 실행 if [%in%]==[] goto message

REM 입력이 Y 또는 y면 install로 점프 if /i [%in%]==[Y] goto install goto end

:install REM 사용자 입력이 Y 또는 y인 경우 실행되는 명령어 집합 echo 당신은 %in%를 선택했습니다.

:end

여기서 __는 공백으로 대치해야 한다.

다음은 userinput.cmd를 실행한 결과이다.



추가정보: 필자가 작성한 배치파일을 직접 다운받기위해서는 다운로드의 userinput.zip을 클릭하기바란다.

다운로드: userinput.zip

댓글: 이 팁은 smerpman님의 질문, xp 무인설치의 RUNONCE.CMD 에서의 선택문 만들기에대한 답으로 작성되었습니다.


두/세벌식 쉽게 전환하기 필자가 세벌식 예찬론자이기는 하지만 필자의 집에서 세벌식... (13697) 2005-04-02
IE SP1으로 보안 사이트 접속시 IE가 무응답인 경우 인터넷 탐색기 6 SP1을 사용해서 ... (6255)2005-03-28

QAOS.com에 게시된지 1년 이상된 자료와 관리자가 공개한 자료는 누구나 제한없이 읽을 수 있습니다.
그러나 QAOS.com의 자료를 퍼가는 것은 금지하고 있습니다.

이 정보가 유용하다고 생각되시면 QAOS.com과 많은 다른 사람들을 위해 퍼가기 보다는 링크로 알려주시기 바랍니다.

세상사는 이야기



RSS 구독 (익명 | 회원 | 강좌 | 포럼)
(C) 1996 ~ 2017 QAOS.com All rights reserved.