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 에서의 선택문 만들기에대한 답으로 작성되었습니다.