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에서만)
- PATH
- PATH 환경 변수의 값을 보여 주거나 변경한다. PATH로 연결된 실행 파일을 찾게 되며, 나중에 작업 디렉터리에 실행 파일이 없어도 PATH 변수에 걸린 디렉터리에 해당 프로그램이 있으면 실행하게 된다. PATH ; 라고 입력하면 기억된 모든 경로를 삭제한다.
- PAUSE
- 사용자에게 계속하려면 아무 키나 누르라는 메시지를 보여 주고, 아무 키나 누르면 계속한다.
- PROMPT
- PROMPT 환경 변수를 보여 주거나 변경한다. 프롬프트의 모습을 바꿀 수 있다.
- SET
- 환경 변수의 값을 설정한다. 변수를 지정하지 않으면 정의된 모든 환경 변수를 보여 준다.
- TIME
- 시스템의 시간을 설정한다.
- UNLOCK
- 낮은 수준의 디스크 접근을 사용하지 않는다. (윈도우 95/98/Me에서만)
- VER
- 운영 체제의 버전을 보여 준다.
제어 구조는 배치 파일 안에서 대부분 쓰인다.
- :레이블
- GOTO의 대상을 정의한다.
- FOR
- 되풀이: 지정된 파일 그룹의 각 실행은 반복한다.
- GOTO
- 지정된 레이블로 실행 위치를 이동한다. 레이블은 콜론(
:likethis
)과 함께 줄 맨 처음에 지정된다.
- REM
- 주석: 실행을 무시할 문자열이다.
- IF
- 프로그램의 실행 조건문이다. "IF EXIST F.EXE GOTO a"는 F.EXE 파일이 존재하면 a 레이블로 이동하라는 뜻이 된다.
- CALL
- 배치 파일의 실행을 멈추고 다른 곳으로 돌아갔다가 계속 진행한다.
- EXIT
- Command.com에서 빠져나와서 프로그램으로 돌아온다.
- SHIFT
- 각 명령 줄 변수를 한 칸 뒤로 이동한다 (e.g.
%0
을 %1
로, %1
을 %2
로, 등. )
COMMAND.COM
을 위한 배치 파일들은 다음의 네 가지 변수를 사용한다고 말할 수 있다:
- ERRORLEVEL
- 환경 변수들
- 명령 줄 매개변수
- "For" 변수들
- 명령어 < 파일이름
- 파일/장치에서 표준 입력을 리다이렉트한다
- 명령어 > 파일이름
- 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 덮어씌운다.
- 명령어 >> 파일이름
- 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 그 아래 줄부터 추가한다.
- 명령어1 | 명령어2
- "명령어 1"의 표준 출력을 "명령어2"의 표준 입력으로 파이프 처리한다.
도스가 단일 작업 운영 체제이기 때문에, 파이프는 임시 파일로, 또는 임시 파일로부터 리다이렉트하면서 명령어들을 순서대로 실행하면서 처리한다. COMMAND.COM
은 표준 오류 채널을 리다이렉트 하지 못한다.
명령 줄의 길이는 최대 128 문자이다. 명령어를 실행할 때 언제나 참 값을 반환한다.