'도스'에 해당되는 글 5건

  1. 2009.08.25 DOSBox
  2. 2009.05.05 GOTO 명령 (3)
  3. 2009.05.02 환경 변수 1
  4. 2009.04.24 DOS에서 숨김 파일 보기
  5. 2009.03.30 이런저런 이야기 (6)

DOSBox

2009.08.25 22:56 from 소프트웨어/소개

DOSBox(도스박스)는 도스 환경을 손쉽게 구현해 주는 에뮬레이터이다. 윈도95와 윈도98까지는 그런대로 도스 환경을 지원해 주었으나 윈도Me부터는 극악한 지원만을 하고 있기 때문에 옛 프로그램을 실행하기 위해서는 나름대로 준비해야 한다. 게다가 도스를 다룰 줄 아는 사람이라도 메모리 관리 등은 매우 귀찮은 작업이다. 이런저런 이유로 도스 환경만을 구현해 줄 수 있는 프로그램을 바라는 사람이 있었으나 마땅한 해결책이 없었다. 과거 버추얼PC가 꽤 잘 지원하였으나 MS로 개발사가 바뀌면서 영 아니게 되었다.

이런 사람들을 위해서 등장했다고 여겨지는 프로그램 바로 도스박스(DOSBox)이다.

프로그램 정보

  • 저작권자/제작자 : 도스박스 팀
  • 운영체제 : 리눅스, FreeBSD, 윈도 9x, 윈도 NT 4.0, 윈도 2000, 윈도 XP, 윈도 비스타, 맥 오에스 텐, OS/2, 팜 OS, RISC OS, BeOS 등
  • 버전 :  7.3 (2009년 5월 27일자)
  • 홈페이지 : http://www.dosbox.com/
  • 다운로드 페이지 : http://www.dosbox.com/download.php?main=1[각주:1]
  • 저작권/라이선스 : 프리웨어 / GPL
  • 평가 : @@@@@@@@@@ ( 8 / 10 ) - 가끔 한글과 관련한 부분에서 깨지거나 멈춘다. 최신 버전일수록 멈추거나 오류가 나타나는 비율이 줄어든다.
  • 설명 :

    • 특정 디렉터리를 드라이브로 인식하는 마운트 기능이 있다. 아울러 ISO 이미지를 CD-ROM으로 인식하여 마운트할 수도 있다.
    • 대부분의 게임을 지원한다. 다만 앞서 말한 한글 문제 때문인지, 한글이나 일본어, 중국어의 경우에는 가끔 화면이 깨지거나 멈추는 일이 있다. 그러나 최근 7.x 버전에서 발견하지 못한 문제이므로 그다지 걱정할 일은 없다.
    • 여러 가지 가이드(설명서, 도움말)를 제공하고 있다.
  • 기타 :

    • 취향에 따라 설치 버전과 휴대용 버전을 받아서 사용할 수 있다.

실행 화면

  • 도스박스 상태 화면
  • 도스박스 실행 화면
  • 도스박스 실행화면을 잡은 화면

관련글

관련 페이지


이 글은 스프링노트에서 작성되었습니다.


  1. 포터블버전은 <a href="http://portableapps.com/apps/games/dosbox_portable">http://portableapps.com/apps/games/dosbox_portable</a> 페이지에서 찾을 수 있다. [본문으로]

'소프트웨어 > 소개' 카테고리의 다른 글

AVI-Mux GUI  (0) 2009.09.09
GSpot  (0) 2009.09.06
DOSBox  (0) 2009.08.25
Windows Automated Installation Kit for Windows 7  (2) 2009.05.09
HxD  (2) 2009.04.23
MultiArc  (0) 2009.04.02
Posted by koc/SALM 트랙백 0 : 댓글 0

GOTO 명령

2009.05.05 22:51 from 스크립트/배치파일

GOTO 명령은 여러 프로그래밍 언어에서 실행 순서를 바꾸어주는 역할을 한다. 그러나 구조적 프로그래밍과 관련하여 지탄을 받는 대상이기도 하다. 한편 도스용 배치파일에서는 배치파일에서 루프(loop) 구현 등 여러 가지 상황과 맞물려 반드시 필요한 기능 가운데 하나였다.

윈도XP의 배치파일에서는 GOTO 명령의 쓰임이 예전보다 줄었으나 아직까지도 여전히 자주 쓰이고 있다. 특히 하위 버전과의 호환성이라는 측면에서 매우 중요한 역할을 하고 있다.

말뜻

GOTO는 배치파일 내부에서 지정하는 대상(레이블)이 있는 곳으로 가라는 뜻을 가지고 있다. 그러므로 이 명령어를 발견하면 뒤따르는 레이블이 위치하는 곳으로 옮겨가면 된다.

GOTO 기본 문법

GOTO 명령의 기본 문법은 매우 간단하다.

GOTO Label

레이블은 여러 가지가 있으며, GOTO 명령과 함께 쓰이는 것을 GOTO레이블이라고 부른다.

GOTO 명령을 GOTO레이블과 함께 표현하면 아래와 같다.

Command_1
Goto :Label_1
Command_2
:Label_1
Command_3
Goto Label_2
Command_4
:Label_2
Command_5

이때 2행에 있는 Goto :Label_1 에서는 레이블 앞에 쌍점(콜론)이 붙었으나, 6행에 있는 Goto Label_2 에서는 레이블 앞에 쌍점이 붙지 않았다. 이처럼 GOTO Label의 형태에서 레이블 앞에는 쌍점을 붙여도 되고, 붙이지 않아도 된다. 명령어와 혼동되지 않도록 쌍점을 붙이는 편이 낫다고 생각한다. 그러나 일반적으로 위와 같이 쓰이는 일은 거의 없고, 대부분 IF 문과 함께 쓰이게 된다.

이때 GOTO 레이블은 8글자를 넘기면, 그 넘어가는 부분은 무시하게 된다. 다시 말해 아래의 레이블은 모두 같은 의미―:a1234567―를 갖게 된다.

  1. :a1234567
  2. :a12345678
  3. :a12345679
  4. :a1234567a
  5. :a1234567b

한편 GOTO문에서 지정한 레이블이 존재하지 않으면, 레이블을 찾을 수 없다는 메시지를 내보내고 배치파일을 종료하게 된다.

다만 윈도XP 명령확장에서 사용하는 :EOF 레이블은 배치파일 내부에서 정의하지 않아도 동작하며, 그 경우 곧바로 오류 메시지를 보이지 않고 배치파일을 종료한다. 이 :EOF 레이블을 사용하려면 반드시 goto :EOF라고 써야 하며, goto EOF라고 콜론을 빠뜨리고 쓰면 동작하지 않는다.

참고 자료

다음 예고

FOR 명령

이 글은 스프링노트에서 작성되었습니다.


'스크립트 > 배치파일' 카테고리의 다른 글

FOR 명령 확장 1  (2) 2009.06.17
FOR 명령  (6) 2009.05.16
GOTO 명령  (3) 2009.05.05
IF 명령 확장  (1) 2009.04.22
IF 문자열  (4) 2009.04.18
IF EXIST  (0) 2009.04.15
Posted by koc/SALM 트랙백 0 : 댓글 3

환경 변수 1

2009.05.02 21:29 from 스크립트
환경 변수가 무엇인지는 환경 변수 2에서 설명하기로 하고, 여기에서는 주의할 점을 몇 가지 설명하겠다.

도스와 윈도는 다르다.

환경 변수를 이용할 때 도스와 윈도가 다르며, 윈도9X 계열과 윈도XP의 경우가 다르다.

  • 도스에서 환경 변수의 이름은 항상 대문자이다. 윈도에서는 환경 변수의 이름에 소문자도 허용된다. 그러나 윈도에서 소문자 이름으로 된 환경변수를 대문자로 써도 똑같다. 반대로 대문자 이름으로 된 환경변수를 소문자로 써도 된다.
  • 도스에서 일부 환경변수의 값은 항상 대문자이다. 윈도에서는 모든 환경변수의 값에 소문자를 포함할 수 있다.
  • 정의되지 않은 환경 변수에 대한 처리 방법이 다르다. 도스와 윈도9X 계열에서는 정의되지 않은 환경변수는 공백으로 처리하지만, 윈도XP에서는 환경변수 이름을 돌려준다.
  • 도스에서는 환경변수가 숫자로만 이루어져도 문자열이지만, 윈도에서는 명령확장을 이용하여 수로 인식할 수 있다. 심지어 사칙연산도 가능하다.
  • 도스에서는 환경변수의 값에 ^(캐럿; 이스케이프 문자)와 &(앰프; 엔티티 부호) 등을 아무런 작업없이 바로 쓸 수 있다. 윈도XP에서는 따옴표(" ")를 사용하는 등 특별한 방법으로써 환경변수의 값에 쓸 수 있다. 다시 말해 윈도XP에서는 좀 더 복잡한 방법을 사용해야 한다. 도스에서는 환경변수의 값에 <(보다 작은; Less than), >(보다 큰; Greater than), |(bar; pipe)와 같은 세 가지 특수문자를 쓸 수 없다. 윈도XP에서는 앞서 말한 특별한 방법으로써 환경변수의 값에 쓸 수 있다.

도스의 환경변수

MS-DOS v6.22를 설치했을 때의 환경 변수는 그다지 많지 않다. COMPSPEC, PROMPT, PATH, TEMP, 이렇게 네 개가 전부이다.

COMPSPEC=C:\COMMAND.COM
PROMPT=$p$g
PATH=C:\DOS
TEMP=C:\DOS

참조 문서

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


'스크립트' 카테고리의 다른 글

환경 변수 2  (9) 2009.05.03
환경 변수 1  (0) 2009.05.02
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
Posted by koc/SALM 트랙백 0 : 댓글 0

팁텍

나는 자주 내 티스토리 블로그에 들어오는 사람들이 어떤 유입경로를 통해 들어오는지를 살펴본다. 딱히 그 사람들을 감시한다는 생각은 없고, 팁이나 벌레 글을 쓸 때 이용하기 위해서이다. 그런데 오늘(4월 24일) 재미있는 것을 발견했다. "이런 것도 모를까?"라는 생각이 들 만한 문제가 나타났다.

"dos 에서 감춰진 파일 보기"라는 저 내용이 처음에는 무엇인지 알지 못했으나, 잠시 후에야 "숨김파일"을 보려고 함을 알 수 있었다.

팁의 발견

감춰진 파일(숨김파일)을 본다는 말은 그 파일의 내용을 본다는 말이 아니라 파일 목록에서 그것이 나타나게 한다는 뜻이다. 도스에서는 여러 가지 방법을 제공하고 있다. 물론 여기에서 설명하는 방법은 윈도의 명령 프롬프트에서도 적용할 수 있다.

DIR 명령

우선 디렉터리에 있는 파일과 하위 디렉터리 목록을 보여주는 명령어인 DIR을 이용해 보자.[각주:1]

버추얼박스에서 MS-DOS 6.22를 실행시켰다.

영문 버전이지만 한글 버전과 별로 다르지 않다. 어쨌든 디렉터리 목록을 보기만 하면 되니까 그게 중요한 게 아니다.

위에서 보면 "11 File(s)"라는 부분이 있다. C:\TEMP 디렉터리는 이번 팁을 작성하면서 새로 만든 디렉터리이다.

이때 이 폴더에는 숨김파일이 있다. 숨김파일만 보려면 /AH 선택자(옵션/선택사항)를 사용하면 된다.

위와 같이 6개의 숨김 파일이 있다고 보여준다.

위의 화면은 차례대로 읽기 전용 파일, 시스템 파일, 모든 속성의 파일의 목록을 보여주는 화면이다.

ATTRIB 명령

DIR 명령을 쓰지 않고도 파일 목록을 볼 수 있다. 바로 파일 속성을 보여주는 ATTRIB 명령을 이용하는 방법이다.

앞서 DIR 명령에서는 모두 19개 파일이 보였는데, ATTRIB 명령에서는 17개만 보인다. 이것은 [.]과 [..] 디렉터리는 현재 디렉터리와 부모 디렉터리를 나타내는 디렉터리로서 실제로 존재하지 않기 때문에 ATTRIB 명령에서는 보여주지 않는다. 위의 목록에서 H 표시가 있는 파일이 숨김 파일이다.

다만 ATTRIB 명령에는 숨김파일만 보는 방법은 존재하지 않는다. 만약 한 화면을 넘기게 된다면 MORE 명령을 함께 이용하면 된다.

  1. ATTRIB | MORE

다른 유틸리티 이용

M-Dir이나 NC(노턴 커맨더) 등의 유틸리티를 이용하여 숨김 파일을 볼 수 있다.

M-Dir에서 숨김 속성 파일을 보여주고 있다. 파일 목록을 보여주는 아래쪽에 디렉터리 정보를 보여주고 있다. 그 맨 왼쪽에 QH라고 된 부분이 숨김 파일을 보여주고 있다는 표시이다(정확하게는 H 부분이다.). 또한 목록에서 파일 크기 부분이 자주색으로 보이는 파일이 숨김 파일이다.

윈도 탐색기

윈도 탐색기는 도스가 아니지만, 그래도 알고 있으면 유용하게 써먹을 수 있다.

숨김 속성을 보여주기 전 화면

숨김 속성을 보여주기 전 화면 (아래 상태표시줄에 숨김 파일이 4개 있다고 알려주고 있다.)

폴더 옵션에서 숨김 파일 및 폴더를 표시하도록 설정

폴더 옵션에서 숨김 파일 및 폴더를 표시하도록 설정

폴더 옵션에서 설정한 뒤의 화면. 숨김 속성의 파일은 희미하게 보인다.

폴더 옵션에서 설정한 뒤의 화면. 숨김 속성의 파일은 희미하게 보인다.

관련 문서

이 글은 스프링노트에서 작성되었습니다.

  1. DIR의 사용법을 알고 싶다면 명령 프롬프트에서 dir /? 라고 입력하기 바란다. [본문으로]
Posted by koc/SALM 트랙백 0 : 댓글 0

이런저런 이야기

2009.03.30 10:45 from 스크립트

들어가며

혼동하기 쉬운 여러 가지를 말하고자 합니다.

명령줄과 명령 프롬프트가 같은 뜻일까요? 아니면 다른 뜻일까요? 배치파일에서는 어떻게 윈도용 프로그램을 실행시킬 수 있을까요? 이와 같은 질문을 생각해 본 적이 있는 사람은 궁금하겠지요.

하나씩 차근차근 알아보기로 하죠.

명령줄? 명령 프롬프트?

명령줄과 명령 프롬프트는 자주 섞어쓰거나 헷갈리지만 분명히 다릅니다.

커맨드 라인(Command Line), 곧 명령줄은 모니터 화면에서 사용자가 명령을 입력하도록 되어 있는 행을 뜻합니다. 덧붙여 그러한 명령이 기억되는 기억장치의 영역도 명령줄이라고 한다네요. 흔히 '명령행'이라고 부릅니다. 한편 CLI(Command Line Interface)를 커맨드 라인이라고 부르기도 합니다.

명령 프롬프트(Command Prompt)는 명령줄에서 명령을 받을 준비가 되었음을 알리는 특별한 문자를 가리킵니다. 이를 확장하여 명령줄에서 명령을 받을 준비를 하고, 명령을 받은 뒤에 결과를 사용자에게 보여주는 일련의 환경을 명령 프롬프트라고 부르지요. 흔히 프롬프트라고 합니다.

이 때문에 컴퓨터를 운영하는 환경을 말할 때에는 한 줄짜리 명령줄은 존재하지만, 한 줄짜리 명령 프롬프트는 존재할 수 없답니다. 명령줄은 명령을 받음으로써 그 역할을 다하지만, 명령 프롬프트는 결과를 사용자에게 보여주어야 하기 때문입니다.

Windows Registry Editor Version 5.00

 

[HKEY_CLASSES_ROOT\Applications\Hwp.exe\shell\open\command]

@="D:\\Bin\\HNC\\Hwp65\\Hwp.exe \"%1\""

위의 파일은 한글과컴퓨터 사의 한/글/2005의 레지스트리 일부입니다. 그 내용은 "명령줄을 레지스트리 안에 어떻게 집어넣을 것인지"를 서술하고 있습니다.

다시 말해 HKEY_CLASSES_ROOT\Applications\Hwp.exe\shell\open\command 라는 키를 찾아서 기본값( @ )으로 문자열(따옴표로 묶인 부분을 문자열로 해석한다) "D:\\Bin\\HNC\\Hwp65\\Hwp.exe \"%1\""을 입력하라는 내용입니다. 이때 문자열의 내용은 지금까지 배치파일에서 다루었던 명령줄 방식을 그대로 따르고 있습니다.

혼동하지 않도록 그림 하나 올립니다.

명령 프롬프트와 명령줄의 차이

명령 프롬프트와 명령줄의 차이

배치파일과 윈도용 프로그램

윈도용 프로그램을 배치파일에서 실행할 수 있게 된 것은 언제인지 모른다. START.EXE 파일을 이용해서 윈도용을 실행한 것은 윈도95가 처음으로 알고 있다. 하지만 명령줄에서 바로 실행하게 된 것은 언제인지 모르고 있다. (아는 사람은 댓글 좀 달아 주세요.)

아무튼 윈도2000과 윈도XP(이하 '윈도')에서는 명령줄에서 바로 윈도용 프로그램을 실행할 수 있다.

왜?

그것은 윈도에 내장된 CMD.EXE 파일이 명령 프롬프트를 구동해 주는 파일인 동시에 윈도의 명령어 셸 가운데 하나이기 때문이다.

명령어 셸은 운영체제에서 지원하는 명령어를 처리하는 프로그램이다. 도스에서는 COMMAND.COM, 윈도 95에서는 도스 모드에서는 COMMAND.COM, 윈도 모드에서는 EXPLORER.EXE였다. 윈도2000 이후로는 주로 EXPLORER.EXE를 쓰며, CMD.EXE도 쓸 수 있다.

아무튼 이 명령어 셸에는 사용자가 쓸 수 있는 명령어가 내장되어 있다. 우리가 마우스를 움직여 파일을 복사하는 등의 명령이 이미 정의되어 있다는 뜻이다. 그런데 특이하게 명령 프롬프트용 명령어 셸인 CMD.EXE가 윈도의 메인 명령어 셸로 쓰일 수 있다. 윈도2000용 PE(사전 설치 환경)가 처음 선보였을 때 명령어 셸로 쓰인 프로그램은 EXPLORER.EXE 프로그램이 아니라 CMD.EXE 프로그램이었다.

또한 윈도의 안전모드에서 명령 프롬프트 사용을 선택하면 CMD.EXE를 셸로 선택하는 환경을 구성한다.

윈도XP 고급 옵션

윈도XP 고급 옵션

그때 윈도의 창모드 명령어를 사용할 수 있다. 그 말은 이미 CMD.EXE 안에 창모드 프로그램을 실행할 수 있게 구성되어 있다는 뜻이다.

그리고 그것을 이용하여 윈도용 프로그램 가운데 창모드 프로그램까지 배치파일에서 불러와서 실행할 수 있게 된다.

쉽게 말해, 윈도에서 CMD.EXE를 통해 모든 프로그램을 실행할 수 있게 만들었다고 생각하면 된다.

도스에서 작성한 배치파일

도스에서 작성한 배치파일을 윈도에서 실행할 수 있을까?

먼저 그것이 윈도에서도 정상 작동하지 않을 수도 있음을 충분히 이해해야 합니다. 아니, 심지어 심각한 문제가 발생할 수도 있다. 각각의 명령어가 가지고 있는 뜻을 잘 이해해야 하며, 또한 각각의 배치파일 팁이 가진 진정한 의미를 숙지하고 있어야 합니다.

다음과 같은 배치파일 팁은 도스 6.2x 이하에서는 정상 작동하지만 윈도95부터는 정상 작동을 보장하지 않습니다.

  1. @ECHO OFF
  2. REM 파일명 : UPPER.BAT
  3. REM 매개 변수를 입력 받아 대문자로 바꾸어 _UPPER 환경 변수에 넣어서 돌려준다.
  4. REM 도스에서는 실행 경로 환경 변수인 PATH는 항상 대문자만을 저장한다는 점을
  5. REM 이용하여 입력 받은 매개 변수를 대문자로 바꾼다.
  6.  
  7. REM 실행 경로를 _TEMP 환경 변수에 저장한다.
  8. SET _TEMP=%PATH%
  9.  
  10. REM 매개 변수를 PATH 환경 변수에 저장한다.
  11. SET PATH=%1 %2 %3 %4 %5 %6 %7 %8 %9
  12.  
  13. REM PATH 환경 변수에 저장된 문자열을 _UPPER 환경 변수에 복사, 저장한다.
  14. SET _UPPER=%PATH%
  15.  
  16. REM PATH 환경 변수를 복원한 뒤 _TEMP 환경 변수를 지운다.
  17. SET PATH=%_TEMP%
  18. SET _TEMP=

위 배치파일 UPPER.BAT는 단순히 환경 변수만을 다루어 피해가 거의 없다. 하지만 최종적으로 윈도 폴더 등을 다루는 배치파일이 있었다면 끔직한 결과가 발생할 수도 있다.

게다가 주요 명령줄 명령어는 윈도에도 존재하기 때문에 그것을 사용할 수 있다. 참고로 윈도에서 사용할 수 있는 명령어 목록은 다음과 같다. (명령줄에서 HELP 명령을 내리면 알 수 있다.)

특정 명령어에 대한 자세한 내용이 필요하면 HELP 명령어 이름을 입력하십시오.
ASSOC    파일 확장명 연결을 보여주거나 수정합니다.
AT       명령어와 프로그램의 실행을 스케줄합니다.
ATTRIB   파일 속성을 표시하거나 바꿉니다.
BREAK    확장된 CTRL+C 검사를 설정하거나 지웁니다.
CACLS    파일의 액세스 컨트롤 목록(ACL)을 표시하거나 수정합니다.
CALL     한 일괄 프로그램에서 다른 일괄 프로그램을 호출합니다.
CD       현재 디렉터리 이름을 보여주거나 바꿉니다.
CHCP     활성화된 코드 페이지의 번호를 표시하거나 설정합니다.
CHDIR    현재 디렉터리 이름을 보여주거나 바꿉니다.
CHKDSK   디스크를 검사하고 상태 보고서를 표시합니다.
CHKNTFS  부팅하는 동안 디스크 확인을 화면에 표시하거나 변경합니다.
CLS      화면을 지웁니다.
CMD      Windows 명령 인터프리터의 새 인스턴스를 시작합니다.
COLOR    콘솔의 기본색과 배경색을 설정합니다.
COMP     두 개 또는 여러 개의 파일을 비교합니다.
COMPACT  NTFS 분할 영역에 있는 파일의 압축을 표시하거나 변경합니다.
CONVERT  FAT 볼륨을 NTFS로 변환합니다. 현재 드라이브는
        변환할 수 없습니다.
COPY     하나 이상의 파일을 다른 위치로 복사합니다.
DATE     날짜를 보여주거나 설정합니다.
DEL      하나 이상의 파일을 지웁니다.
DIR      디렉터리에 있는 파일과 하위 디렉터리 목록을 보여줍니다.
DISKCOMP 두 플로피 디스크의 내용을 비교합니다.
DISKCOPY 플로피 디스크의 내용을 다른 플로피 디스크로 복사합니다.
DOSKEY   명령줄을 편집하고, Windows 명령을 다시 호출하고, 매크로를 만듭니다.
ECHO     메시지를 보여주거나, 명령어 반향을 켜거나 끕니다.
ENDLOCAL 일괄 파일에서 환경 변경의 지역화를 끝냅니다.
ERASE    하나 이상의 파일을 지웁니다.
EXIT     CMD.EXE 프로그램(명령 인터프리터)을 마칩니다.
FC       두 파일 또는 파일의 집합을 비교하여 다른 점을
        표시합니다.
FIND     파일에서 텍스트 문자열을 찾습니다.
FINDSTR  파일에서 문자열을 찾습니다.
FOR      파일 집합에서 각 파일에 대해 지정된 명령을 실행합니다.
FORMAT   Windows에서 사용할 디스크를 포맷합니다.
FTYPE    파일 확장 연결에 사용되는 파일 형식을 표시하거나 수정합니다.
GOTO     Windows 명령 인터프리터가 일괄 프로그램에서 이름표가 붙여진
        줄로 가게 합니다.
GRAFTABL Windows가 그래픽 모드에서 확장 문자 세트를 표시할
        수 있게 합니다.
HELP     Windows 명령어에 관한 도움말을 제공합니다.
IF       일괄 프로그램에서 조건 처리를 수행합니다.
LABEL    디스크의 볼륨 이름을 만들거나, 바꾸거나, 지웁니다.
MD       디렉터리를 만듭니다.
MKDIR    디렉터리를 만듭니다.
MODE     시스템 장치를 구성합니다.
MORE     출력을 한번에 한 화면씩 표시합니다.
MOVE     하나 이상의 파일을 한 디렉터리에서 다른 디렉터리로 옮깁니다.
PATH     실행 파일의 찾기 경로를 보여주거나 설정합니다.
PAUSE    일괄 파일의 처리를 보류하고 메시지를 보여줍니다.
POPD     PUSHD 명령으로 저장된 디렉터리로 바꿉니다.
PRINT    텍스트 파일을 인쇄합니다.
PROMPT   Windows 명령 프롬프트를 바꿉니다.
PUSHD    현재 디렉터리를 저장한 후 디렉터리를 바꿉니다.
RD       디렉터리를 지웁니다.
RECOVER  불량이거나 결함이 있는 디스크에서 읽을 수 있는 정보를 복구합니다.
REM      일괄 파일 또는 CONFIG.SYS에서 주석을 기록합니다.
REN      파일 이름을 바꿉니다.
RENAME   파일 이름을 바꿉니다.
REPLACE  파일을 대체합니다.
RMDIR    디렉터리를 지웁니다.
SET      Windows 환경 변수를 보여주거나, 설정하거나, 지웁니다.
SETLOCAL 일괄 파일에서 환경 변경의 지역화를 시작합니다.
SHIFT    일괄 파일에서 바꿀 수 있는 매개 변수의 위치를 바꿉니다.
SORT     입력을 정렬합니다.
START    지정된 프로그램이나 명령을 별도의 창에서 시작합니다.
SUBST    경로를 드라이브 문자로 지정합니다.
TIME     시스템 시간을 보여주거나 설정합니다.
TITLE    CMD.EXE 세션에 대한 창의 창 제목을 설정합니다.
TREE     드라이브 또는 경로의 디렉터리 구조를 그래픽으로 화면에 표시합니다.
TYPE     텍스트 파일의 내용을 보여줍니다.
VER      Windows 버전을 보여줍니다.
VERIFY   파일이 디스크에 올바로 쓰였는지 검증할지
        여부를 지정합니다.
VOL      디스크 볼륨 이름과 일련 번호를 보여줍니다.
XCOPY    파일과 디렉터리 트리를 복사합니다.

저 가운데 파일 형태로 존재하는 명령도 있고, CMD.EXE 셸에 내장된 명령어도 있다. 또한 도스 명령어와 명령어는 같지만, 그 내용에서 현저한 차이를 보이는 SET이나 IF, FOR 등의 명령어는 다시 공부할 필요가 있다.

도스와 윈도의 차이

도스와 윈도2000/XP의 차이는 많지만 몇 가지만 밝히겠다. 내가 아는 것만. ^^a 도스는 명령줄 기반이고, 윈도 그래픽 환경 기반이라는 점과 같은 차이가 아니라 배치파일을 운용할 때 주의해야 할 차이점을 나열하였다.

  1. 도스에서는 파일이름이 파일명.확장자 형태로 8자, 3자였다. 윈도에서는 파일명과 확장자를 합해서 255자까지 만들 수 있다.
  2. 도스, 즉 MS도스에서는 배치 파일 확장자가 .BAT였으나, 윈도에서는 .BAT는 물론이고 .CMD도 있다.
  3. 도스에서는 디렉터리를 7단계까지 만들 수 있다. 윈도에서는 255자 한계 안에서 얼마든지 만들 수 있다.[각주:1] 예컨대 C:\A11\B22\C33\D44\E55\F66\G77\H88\FILE.EXT 파일은 도스에서는 읽지 못할 수도 있다.[각주:2] 그러나 윈도에서는 문제 없이 읽을 수 있다.
  4. 도스에서는 파일이름을 포함한 경로가 66자이거나 그보다 짧아야 한다.
  5. 도스에서는 파일이름에 공백을 포함할 수 없다. 윈도에서는 공백을 포함할 수 있다.
  6. 도스에서는 NUL, PRN 등의 이름을 가진 파일을 만들 수 없다. 윈도에서는 그러한 이름도 허용된다. 다만 약간 다른 방법이 써야 한다. QAOS : LPT1과 같은 다른 예약된 이름을 삭제할 수 없는 경우 참조.
  7. 도스에 환경 변수 이름은 항상 대문자로 나타나지만, 윈도에서 소문자 환경 변수도 있다. 예컨대 윈도에서 windir 환경 변수는 소문자로 이루어져 있다. 이때 소문자 환경변수를 대문자로 입력하더라도 인식한다. 다시 말해 ECHO %WINDIR% 명령은 적법하다.

그밖에 내가 모르는 차이가 있을 수도 있다.

배치파일로 악성 코드를 만들 수 있나?

당연한 말이겠지만, 만들 수 있다고 한다.

이는 배치파일로 배치파일을 만들 수 있고, 그에 따라 복제 가능한 코드도 만들어낼 수 있다. 또한 시스템에 위해를 끼치는 코드를 만들 수 있다. 이와 같은 상황을 종합하면, 자기 자신을 복제할 수 있으며 시스템에 위해를 끼칠 수 있는 배치파일을 만들 수 있다는 뜻이 된다.

이것은 매우 예외적인 경우이다. 하지만 컴퓨터 바이러스 프로그램이 도스 2.0판에서 처음 제공된 PRINT 프로그램을 연구하여 만들었다는 사실에 비추어 보자면, 배치파일로 악성 코드를 만드는 일도 불가능하다고 볼 수는 없다.

다시 예외가 겹쳐서 사소한 실수로 그런 코드를 만들어낼 수도 있으므로 주의를 기울일 필요가 있다. 물론 윈도XP 등에서는 중요한 파일은 시스템 차원에서 보호하고 있기는 하다. 그럼에도 불구하고 boot.ini, ntldr, NTDETECT.COM 등의 파일을 삭제하거나 수정하는 실수를 내포하는 배치파일이 만들어질 수 있으므로 주의해야 한다.

특히 ntldr 파일과 NTDETECT.COM 파일이 손상되면 부팅이 되지 않을 수도 있으므로 다시 한 번 주의하자.

실행 경로란?

실행 경로란 흔히 "패스"라고 부른다. 명령어 PATH로서 알아볼 수 있으며, 정확한 명칭은 실행 파일의 검색 경로이다. PATH 환경 변수에 그 값이 문자열로 저장되어 있다.

PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;D:\Bin\Windows Imaging\;c:\1\TC UP\PLUGINS\Library

위와 같을 때 내가 명령 프롬프트에서 명령어를 입력했을 때 가장 먼저 현재 경로에서 찾게 된다. 현재 경로는 대개 커서가 깜박이는 자리의 왼쪽으로 나타나게 된다. 위에서 말했듯이 실행 경로는 대문자와 소문자가 쓰이며, 실제 윈도에 존재하는 경로명과 문자 크기가 달라도 상관없다. 예컨대 실제 경로명이 C:\WINDOWS라고 할 때 PATH 환경 변수에는 c:\windows라고 소문자로 기록되어도 된다는 뜻이다.

아무튼 위의 예시에 나타난 순서를 보면, C:\WINDOWS\system32 디렉터리(폴더)에서 실행파일을 가장 먼저 찾고, 그 다음이 C:\WINDOWS, C:\WINDOWS\System32\Wbem, D:\Bin\Windows Imaging, c:\1\TC UP\PLUGINS\Library 와 같은 순서로 찾게 된다. 이때 주의할 점은 명령어 셸 내장 명령어를 현재 경로보다 먼저 찾게 된다는 사실이다. 지금까지 자주 사용했던 ECHO 명령도 CMD.EXE 파일에 내장된 명령어이다.

정리하면 명령어 셸 내장 명령어를 가장 먼저 찾고, 그 뒤에 현재 경로에서 실행파일을 찾고, 마지막으로 PATH 환경 변수에 저장된 경로에서 실행파일을 찾게 된다. 그래도 못 찾으면 다음과 같은 메시지를 보여준다.

'XXXXX'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는

배치 파일이 아닙니다.

실행 파일이란?

그렇다면 실행 파일은 무엇일까? 위의 예시에 나타난 "외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일"을 통틀어 실행 파일이라고 부른다. 이것은 PATHEXT 환경 변수에 저장되어 있는 값으로서 배치파일에서 이용할 수 있는 명령어에서 설명한 내용이 그것이다. 그때 좀 부정확하게 설명했었다. 배치파일에서 이용할 수 있는 명령어를 설명하면서 SCF 등의 파일도 설명했으나, 사실 그것을 명령어로 보기에는 무리가 있었다. 아무튼 PATHEXT는 특별한 확장자를 가진 파일을 실행할 수 있다는 의미를 가지고 있다.

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

확장자가 .COM, .EXE, .BAT, .CMD, .VBS, .VBE, .JS, .JSE, .WSF 및 .WSH일 때 실행할 수 있다는 뜻이다. 이때 실행하는 순서는 .COM 파일이 가장 먼저이고, 그 다음으로 .EXE 등의 순서를 따른다.

이때 .BAT 파일을 .CMD 파일보다 먼저 찾게 된다. 이 말은 Hello.bat 파일과 Hello.cmd 파일이 존재한다면 Hello 라고 명령을 주었다면 Hello.bat 파일이 실행된다는 뜻이다. Hello.cmd를 실행하고 싶다면 반드시 명령행에서 Hello.cmd를 입력하기 바란다.

프로그래밍에서는 왜 Hello World를 가르칠까?

대부분 처음 배우는 프로그램이 Hello World 문자열 출력이다. 왜 그것을 가르칠까? 설마 아무 생각 없이 가르치고, 또한 아무 생각 없이 배웠다면 지금 생각해 보기 바란다.

왜 그것을 가르칠까?

아주 당연한 말이지만, 컴퓨터 프로그램은 일반적으로 사용자에게 결과를 보여주어야 하기 때문이다.

Hello World 화면 출력을 가르침으로써 프로그래밍의 근본 목적(사용자에게 결과 보여주기)을 가르칠 수 있다는 뜻이다. 아울러 잊지 말아야 할 점, 곧 사용자는 항상 자신이 프로그램을 통해서 한 일을 알고 싶어한다는 점을 기억하게 만들 목적에서 그것을 가르치게 된다.

혹시 자신이 만든 프로그램이 사용자에게 아무런 정보도 주지 않는다면, 지금이라고 고치기 바란다. 정보를 주지 않는 프로그램은 외면받기 쉽상이기 때문이다.

다음 예고

매개 변수를 배치파일에 전달하는 방법에 대해서 알아보겠다.

위에서 다루지 못한 사항은 질문을 하기 바란다. 나중에 다시 이런저런 이야기2를 만들어 이야기하겠다.

이 글은 스프링노트에서 작성되었습니다.

  1. 다만 이것이 디렉터리 경로 전체 길이에 대한 제한인지는 모르겠다. 너무 오래 되어 기억이 가물가물하다. [본문으로]
  2. 읽지 못하면 정상이고, 읽을 수 있다면 편법을 동원해서라도 읽을 수 있게 해 놓은 것이다. [본문으로]

'스크립트' 카테고리의 다른 글

환경 변수 2  (9) 2009.05.03
환경 변수 1  (0) 2009.05.02
이런저런 이야기  (6) 2009.03.30
스크립트란 무엇인가? 배치파일이란 무엇인가?  (8) 2009.03.21
Posted by koc/SALM 트랙백 0 : 댓글 6

티스토리 툴바