도스길라잡이
도스 길라잡이 시스템 사용을 간편하게, AUTOEXEC.BAT (2)
지난 호에서 AUTOEXEC.BAT 파일에 대한 기본적인 사항은 이해되었으리라 생각되므로 이제 복수의 시스템 구성을 위한 배치파일을 구성하는 법을 알아본다. 사용자는 여러 개의 시스템을 구성하여 사용할 때 각 시스템 구성마다 다른 AUTOEXEC.BAT 명령을 실행토록 할 수 있다. 이 때 사용자는 GOTO나 IF 명령을 사용하여 일괄 처리 파일을 만들어야 한다.
복수의 시스템구성을 위한 AUTOEXEC.BAT파일 작성법
1. AUTOEXEC.BAT 파일의 첫 행은 @ECHO OFF로 시작한다.
2. CONFIG.SYS 파일의 [ ] 부분에 어떤 메뉴명이 사용되었는지 확인한다.
3. %CONFIG%환경변수를 사용하여 각 메뉴별로 명령어 블럭을 작성한다. 명령어 블럭은 :(콜론)으로 시작하는 레이블을 메뉴명으로 첫 행에 넣고 필요한 명령어를 각 행에 추가한 다음 마지막 행을 GOTO END로 끝낸다.
4. AUTOEXEC.BAT파일의 골격이 완성되었으면 각 메뉴 블럭에 사용할 각각의 배치파일을 삽입한다.
한마디로 CONFIG라는 환경변수가 바로 배치파일을 선택적으로 실행하게 해주는 장본인이다. 부팅시 CONFIG.SYS 파일이 실행되면 CONFIG라는 환경변수에 사용자가 선택한 메뉴명이 저장된다. 그런데 도스가 이 명령어를 만나면 :end 명령어와 :end 명령어 사이에 삽입되어 있는 명령어들은 수행되지 않게 되는 것이다. 다음으로 GOTO나 IF명령을 이용하여 선택된 메뉴에 해당하는 AUTOEXEC.BAT 파일을 실행하게 되는데, 이 두가지 방법을 예제로써 설명해 보겠다.
GOTO %CONFIG% 명령을 사용하는 예
다음은 연장메모리만 사용하는 배치파일과 확장메모리를 사용하는 배치파일이다. 일단 이 두 개의 배치파일을 합쳐야 하는데, AUTOEXEC.BAT 파일을 합치려면 CONFIG.SYS에서와 마찬가지로 에디터나 도스의 카피COPY명령을 이용하여야 한다. 배치파일을 모두 합쳤으면 각 배치파일 블럭에 :(콜론)으로 시작하는 메뉴명을 붙이고 배치파일 앞부분에 GOTO %CONFIG%를 넣은 뒤 :END라는 레이블을 넣는다. 그리고 각 메뉴 블럭 뒤에는 GOTO END를 넣어 준다. 이 과정이 끝나면 다음과 같은 AUTOEXEC.BAT 파일이 완성된다.
@ECHO OFF
GOTO %CONFIG%
:EXTENDED
PROMPT $P$G
PATH C:\DOS
C:\DOS\SMARTDRV
GOTO END
:EXPANDED
PROMPT $P$G
PATH C:\DOS
C:\UTIL\PCACHE
GOTO END
:END
여기에서 보면 PROMPT나 PATH 명령이 각 블럭에서 중복되어 사용되었는데, 파일을 재구성해서 이렇게 중복된 부분을 두 번 쓸 필요 없이 하나로 묶을 수 있다. 다음의 파일이 위의 AUTOEXEC.BAT 파일을 재구성하여 완성한 것이다.
@ECHO OFF
PROMPT $P$G
PATH C:\DOS
GOTO %CONFIG%
:EXTENDED
C:\DOS\SMARTDRV
GOTO END
:EXPANDED
C:\UTIL\PCACHE
GOTO END
:END
이렇게 여러 개로 시스템을 구성하고 나서 다시 부팅을 하면 메뉴 선택 화면에서 번호를 선택하라고 나온다. 이제 자신이 원하는 시스템에 따라 번호를 눌러주면 CONFIG라는 환경변수에 기억된 대로 시스템이 작동된다. 즉 도스는 AUTOEXEC.BAT 파일을 실행할 때 PROMPT와 PATH를 실행한 후 ‘GOTO %CONFIG%’를 ‘GOTO EXPANDED’, 혹은 ‘GOTO EXTENDED’로 해석하여 이 명령 뒤에 있는 내용을 실행하는 것이다.
IF명령을 사용하는 예
초보자는 위와 같이 GOTO %CONFIG%를 사용하는 게 간편할 것이다. 그러나 배치파일에 자신이 있는 사용자라면 IF명령어를 사용하여 복잡한 배치파일을 원하는 대로 요리할 수 있다. IF 명령어를 사용할 때의 장점은 각 블럭의 레이블명을 CONFIG.SYS에서 사용한 메뉴명과 다른 이름으로 사용할 수 있다. IF명령어를 사용하는 AUTOEXEC.BAT 파일의 골격은 다음과 같다.
@ECHO OFF
IF %CONFIG%==A GOTO A
IF %CINFIG%==B GOTO B
:A
[블럭의 명령어들을 쓸 곳]
GOTO END
:B
[블럭의 명령어들을 쓸 곳]
GOTO END
:END
[블럭의 명령어들을 쓸 곳]
이 예제는 두 개의 메뉴가 있는 경우인데, 세 개, 네 개의 메뉴가 있어도 같은 방법을 사용하면 된다. GOTO %CONFIG%를 사용했던 처음 예제를 IF 명령어를 사용하여 재구성해 보겠다.
@ECHO OFF
PROMPT $P$G
PATH C:\DOS
IF %CONFIG%==EXTENDED GOTO EXTENDED_MEMORY
IF %CINFIG%==EXPANDED GOTO EXPANDED_MEMORY
GOTO END
:EXTENDED_MEMORY
C:\DOS\SMARTDRV
GOTO END
:EXPANDED_MEMORY
C:\UTIL\PCACHE
GOTO END
:END
이와 같이 IF명령을 사용하면 레이블명이 반드시 메뉴명과 같을 필요가 없다. 다만 특별한 이유가 없을 때는 레이블명을 메뉴명과 같이 쓰는 것이 무난한 방법이다. 또한 주의할 점은 레이블명을 길게 쓸 수는 있으나, 도스가 레이블명의 첫 여덟자만 인식하게 되므로 각 메뉴 블럭 레이블명의 첫 여덟자는 모두 다르게 구별해 주어야 한다. 이것으로 CONFIG.SYS 뿐만 아니라 각 메뉴에 대한 AUTOEXEC.BAT 파일의 설정이 끝났다. 이제 새로 부팅을 하여 화면에 나오는 메뉴 번호만 선택하면 CONFIG.SYS에서 AUTOEXEC.BAT 파일까지 모든 것을 내가 원하는 대로 진행시켜 볼 수 있다. 본 컬럼은 도스 초보자가 쉽게 도스를 배워갈 수 있도록 하기 위한 것이다. 그러므로 좀더 고난도의 도스 지식을 원하는 독자는 고급도스에 관한 단행본을 참고하길 바란다.