최근 수정 시각 : 2024-09-04 23:57:40

COMMAND.COM

1. 개요2. 내부 명령어3. 파일 시스템 명령어4. 제어 구조5. 변수6. 리다이렉션과 파일7. 버그 및 제한8. 기타9. 관련 문서

1. 개요

MS-DOSWindows Me까지의 기본 CLI 인터프리터 유틸리티이다. Windows NT에서는 명령 프롬프트가 기본이나 32비트 한정으로 9x 버전 하위 호환을 위해 해당 파일 역시 존재한다. DOS 셸을 제공하며 두 가지 기능을 제공한다. 첫째로는 사용자가 명령어를 입력하면 즉시 실행하는 사용자 대화 방식이 있다. 둘째로는 일괄 처리(배치) 방식이며 문자열이 담긴 .BAT라는 확장자를 가진 파일 안에 명령어들을 순서대로 나열해 두면 그 순서대로 명령어 처리기가 실행할 수 있다. cmd.exe는 Windows NT 계열의 운영체제OS/2에서 쓰이며, Windows NT 계열의 운영 체제에서는 OS 상에서 도스를 실행할 수는 없지만 가상 도스 머신을 이용하여 DOS 응용 프로그램들이 실행될 때 호환성을 제공하기 위해 쓰였다. 64비트 Windows에는 들어가지 않는다. NTVDM이 지원되지 않아서이며, 파일을 가져와도 실행할 수 없다.

2. 내부 명령어

모든 명령어는 마지막 줄에 ↵ Enter 키가 눌린 뒤에만 실행된다. COMMAND.COM은 대소문자를 구별하지 않기 때문에 어느 문자열이나 대소문자가 섞여 있어도 같은 것으로 인식한다. 이를테면, dir, DIR, DiR, dIr, diR 모두 똑같이 동작한다. 이는 명령 프롬프트도 같다.

3. 파일 시스템 명령어

COMMAND.COM의 주 기능으로 여러 파일과 함께 동작할 수 있는 수많은 내장 명령어를 들 수 있다.
<rowcolor=#fff> 명령어 기능
DIR 지정한 디렉터리의 내용을 나열한다.
CD, CHDIR 현재 작업하는 디렉터리를 바꾸거나 현재의 디렉터리를 보여 준다.
COPY 파일을 디렉터리나 표준 입출력장치로 복사한다. 다수의 파일을 결합하거나 새로운 파일을 만들 수 있다. 대상이 이미 존재하면 MS-DOS는 기존의 대상을 대체할 것인지 묻는다. 디렉터리까지 완전히 복사하는 외부 명령어 XCOPY도 있다.
REN, RENAME 파일이나 디렉터리의 이름을 바꾼다.
DEL, ERASE 파일을 삭제한다. 디렉터리로 사용될 때, 해당 디렉터리의 지정 파일을 지우지만 디렉터리 자체를 지우지는 않는다. Win2k, WinXP는 /S 옵션을 추가하면 하위 디텍터리도 삭제한다.
MD, MKDIR 디렉터리를 새로 하나 만든다.
RD, RMDIR 빈 디렉터리를 제거한다.
VOL 볼륨, 곧 디스크 이름과 일련번호를 보여 준다.
LABEL 볼륨, 곧 디스크 이름과 일련번호를 보여 주고 이름을 바꾼다.
VERIFY 파일 쓰기의 유효성을 확인하게 하거나 확인하지 않게 한다.
TYPE 파일의 내용을 보여 준다. TYPE은 파일의 내용을 한 화면마다 끊어서 보여 주지 않지만, 외부 명령어 MORE는 파일의 내용을 끊어서 보여 준다.
BREAK Ctrl + C로 프로그램 인터럽트 관리를 제어한다. 어떠한 과정의 동작을 멈출 때 사용한다.
CLS 화면을 지운다.
CHCP 현재의 시스템 코드 페이지를 보여 주거나 바꾼다. 한국어 코드 페이지를 띄우려면 chcp 949, 영문 코드 페이지를 띄우려면 chcp 437을 입력하면 된다. MS-DOS 한글판에서는 hcode 명령어가 존재했는데 hcode /k라고 입력하면 chcp 949로, hcode /e라고 입력하면 chcp 437로 동작한다. Windows 9x부터는 hbios또는 mshbios /u만 입력해줘도 알아서 chcp 437로 동작된다.
CTTY 장치의 입출력을 정의한다.
DATE 시스템 날짜를 설정한다.
ECHO 문자열을 보여 줄지 보여 주지 않을지 정하거나(ECHO ON, ECHO OFF) 사용자가 지정한 문자열을 화면에 보여 준다(ECHO 문자열).
LH, LOADHIGH 프로그램을 상위 메모리로 올려 놓는다(DR-DOS의 경우 HILOAD).
LOCK 외부 프로그램이 낮은 수준의 디스크 접근을 볼륨에 수행할 수 있게 한다(Win95/98/Me에서만).
PATH 환경 변수의 값을 보여 주거나 변경한다. PATH로 연결된 실행 파일을 찾게 되며, 나중에 작업 디렉터리에 실행 파일이 없어도 PATH 변수에 걸린 디렉터리에 해당 프로그램이 있으면 실행하게 된다. PATH ;라고 입력하면 기억된 모든 경로를 삭제한다.
PAUSE 사용자에게 계속하려면 아무 키나 누르라는 메시지를 보여 주고, 아무 키나 누르면 계속한다.
PROMPT PROMPT 환경 변수를 보여 주거나 변경한다. 프롬프트의 모습을 바꿀 수 있다.
SET 환경 변수의 값을 설정한다. 변수를 지정하지 않으면 정의된 모든 환경 변수를 보여 준다.
TIME 시스템의 시간을 설정한다.
UNLOCK 낮은 수준의 디스크 접근을 사용하지 않는다(Win95/98/Me에서만).
VER 운영 체제의 버전을 보여 준다.

4. 제어 구조

제어 구조는 배치 파일 안에서 대부분 쓰인다.
  • : 레이블 GOTO의 대상을 정의한다.
  • FOR 되풀이: 지정된 파일 그룹의 각 실행은 반복한다.
  • GOTO: 지정된 레이블로 실행 위치를 이동한다. 레이블은 콜론(:likethis)과 함께 줄 맨 처음에 지정된다.
  • REM 주석: 실행을 무시할 문자열이다.
  • IF: 프로그램의 실행 조건문이다. "IF EXIST F.EXE GOTO a"는 F.EXE 파일이 존재하면 a 레이블로 이동하라는 뜻이 된다.
  • CALL: 배치 파일의 실행을 멈추고 다른 곳으로 돌아갔다가 계속 진행한다.
  • EXIT: COMMAND.COM에서 빠져나와서 프로그램으로 돌아온다.
  • SHIFT: 각 명령 줄 변수를 한 칸 뒤로 이동한다(예: %0을 %1로, %1을 %2로, 등).

5. 변수

COMMAND.COM을 위한 배치 파일들은 다음의 네 가지 변수를 사용한다고 말할 수 있다:
  • ERRORLEVEL
  • 환경 변수들
  • 명령 줄 매개변수
  • "For" 변수들

6. 리다이렉션과 파일

  • 명령어 < 파일이름: 파일/장치에서 표준 입력을 리다이렉트한다.
  • 명령어 > 파일이름: 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 덮어씌운다.
  • 명령어 >> 파일이름 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 그 아래 줄부터 추가한다.
  • 명령어1 | 명령어2 "명령어 1"의 표준 출력을 "명령어2"의 표준 입력으로 파이프 처리한다.

도스가 단일 작업 운영 체제이기 때문에 파이프는 임시 파일로, 또는 임시 파일로부터 리다이렉트하면서 명령어들을 순서대로 실행하면서 처리한다. COMMAND.COM은 표준 오류 채널을 리다이렉트하지 못한다.

7. 버그 및 제한

명령 줄의 길이는 최대 128 문자이다. 명령어를 실행할 때 언제나 참 값을 반환한다.

8. 기타

MS-DOS가 주력 운영 체제였던 MS-DOS 6.x 이전까지 파워 유저들은 COMMAND.COM 대신 서드 파티 셸인 4DOS(파일명 4DOS.COM)을 쓰기도 했었다. 4DOS 전용의 명령어도 있었으며, 그것을 이용한 배치파일의 처리 등을 통해 처리 속도를 올릴 수도 있었다. 또 같은 명령어라도 기능이 다르다. 예를 들면 DIR 명령어를 치면 확장자별로 색이 달리 나오는 등의 차이점이 존재한다. INI 파일의 편집을 통해 설정을 편집하고 저장할 수 있었다. 당연히 현재는 업데이트가 안 되고 있지만 최종 버전을 개발사 JP Software의 홈페이지에서 무료로 다운로드받을 수 있다. 소스 코드도 오픈 소스가 돼서 변형된 MIT 라이선스를 적용하고 있다.[1] 그리고 JP Software는 4DOS의 Windows NT용 후속작인 Take Command(구칭 4DOS for Windows NT, 줄여서 4NT)라는 상용 프로그램을 개발해 현재도 판매 중이다. 하지만 이 프로그램은 과거 4DOS 같은 인지도를 누리지는 못하고 있다.

Windows 9x 계열은 MS-DOS 7.x~8.x를 하부 구조로 하고 있었으나, 이 시점부터 실질적으로는 컴퓨터 사용자들이 MS-DOS 모드에서 뭔가를 작업하는 경우는 거의 없어졌다.

확장자인 COM이 TLD의 일종인 .com과 같은 철자인데 실제 이 주소로 접속하면 3M의 코맨드(Command) 브랜드 홈페이지가 나온다.

9. 관련 문서


[1] #

분류