`**COMMAND.COM**`은 도스와 윈도우 95, 98, ME 등을 기본으로 하는 운영 체제 셸의 파일 이름으로 명령 줄 해석기라 부른다.

시동 직후 첫 프로그램이 실행되면 `AUTOEXEC.BAT` 구성 파일을 실행하여 시스템을 설정할 책임을 가지고 뒤따르는 다른 과정을 밟게 된다.

운영 방식
-----

도스 셸을 제공하며 두 가지 기능을 제공한다. 첫째로는 사용자가 명령어를 입력하면 즉시 실행하는 사용자 대화 방식이 있다. 둘째로는 일괄처리(배치) 방식이며 문자열이 담긴 `.BAT`라는 확장자를 가진 파일 안에 명령어들을 순서대로 나열해 두면 그 순서대로 명령어 처리기가 실행할 수 있다. `cmd.exe`는 윈도우 NT, 2000, XP, 2003, 비스타 등 OS/2에서 쓰이며 윈도우 NT 계열의 운영 체제에서는 OS 상에서 도스를 실행할 수는 없지만 가상 도스 머신을 이용하여 DOS 응용 프로그램들이 실행될 때 호환성을 제공하기 위해 쓰였다.

잘 알려진 내부 명령어
------------

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

### 파일 시스템 명령어

`COMMAND.COM`의 주 기능으로 여러 파일과 함께 동작할 수 있는 수많은 내장 명령어를 들 수 있다.

프로그램을 실행하려면, 단순히 실행 파일의 이름을 입력하고 `↵ Enter` 키를 누르면 된다. 현재의 드라이브를 바꾸려면 드라이브 문자열에 콜론 기호를 덧붙이면 된다. (이를테면 D 드라이브로 이동할 때, `D:`) 다른 파일 시스템 명령어는 보통 다음의 것들을 들 수 있다:

DIR지정한 디렉터리의 내용을 나열한다.
CD, CHDIR현재 작업하는 디렉터리를 바꾸거나 현재의 디렉터리를 보여 준다.
COPY파일을 디렉터리나 표준 입출력장치로 복사한다. 다수의 파일을 결합하거나 새로운 파일을 만들 수 있다. 대상이 이미 존재하면 MS-DOS는 기존의 대상을 대체할 것인지 묻는다. (디렉터리까지 완전히 복사하는 외부 명령어 XCOPY도 있다.)
REN, RENAME파일이나 디렉터리의 이름을 바꾼다.
DEL, ERASE파일을 삭제한다. 디렉터리로 사용될 때, 해당 디렉터리의 지정 파일을 지우지만 디렉터리 자체를 지우지는 않는다. 윈도우 XP와 윈도우 2000은 /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로 동작한다.)
CTTY장치의 입출력을 정의한다.
DATE시스템 날짜를 설정한다.
ECHO문자열을 보여 줄지 보여 주지 않을지 정하거나 (`ECHO ON`, `ECHO OFF`) 사용자가 지정한 문자열을 화면에 보여 준다. (`ECHO 문자열`).
LH, LOADHIGH프로그램을 상위 메모리로 올려 놓는다 (DR-DOS의 경우 `HILOAD`).
LOCK외부 프로그램이 낮은 수준의 디스크 접근을 볼륨에 수행할 수 있게 한다. (윈도우 95/98/Me에서만)
PATHPATH 환경 변수의 값을 보여 주거나 변경한다. PATH로 연결된 실행 파일을 찾게 되며, 나중에 작업 디렉터리에 실행 파일이 없어도 PATH 변수에 걸린 디렉터리에 해당 프로그램이 있으면 실행하게 된다. PATH ; 라고 입력하면 기억된 모든 경로를 삭제한다.
PAUSE사용자에게 계속하려면 아무 키나 누르라는 메시지를 보여 주고, 아무 키나 누르면 계속한다.
PROMPTPROMPT 환경 변수를 보여 주거나 변경한다. 프롬프트의 모습을 바꿀 수 있다.
SET환경 변수의 값을 설정한다. 변수를 지정하지 않으면 정의된 모든 환경 변수를 보여 준다.
TIME시스템의 시간을 설정한다.
UNLOCK낮은 수준의 디스크 접근을 사용하지 않는다. (윈도우 95/98/Me에서만)
VER운영 체제의 버전을 보여 준다.

제어 구조
-----

제어 구조는 배치 파일 안에서 대부분 쓰인다.

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

변수
--

`COMMAND.COM`을 위한 배치 파일들은 다음의 네 가지 변수를 사용한다고 말할 수 있다:

1. ERRORLEVEL
2. 환경 변수들
3. 명령 줄 매개변수
4. "For" 변수들

리다이렉션과 파이프
----------

*명령어* < *파일이름*파일/장치에서 표준 입력을 리다이렉트한다
*명령어* > *파일이름*표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 덮어씌운다.
*명령어* >> *파일이름*표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 그 아래 줄부터 추가한다.
*명령어1* | *명령어2*"명령어 1"의 표준 출력을 "명령어2"의 표준 입력으로 파이프 처리한다.
도스가 단일 작업 운영 체제이기 때문에, 파이프는 임시 파일로, 또는 임시 파일로부터 리다이렉트하면서 명령어들을 순서대로 실행하면서 처리한다. `COMMAND.COM`은 표준 오류 채널을 리다이렉트 하지 못한다.

버그 및 제한
-------

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