COMMAND.COM
1. 개요
MS-DOS와 Windows ME까지의 기본 CLI 인터프리터 유틸리티. Windows NT에서는 명령 프롬프트가 기본이나 32비트 한정으로 9x버전 하위 호환을 위해 해당 파일 역시 존재한다. DOS 셸을 제공하며 두 가지 기능을 제공한다. 첫째로는 사용자가 명령어를 입력하면 즉시 실행하는 사용자 대화 방식이 있다. 둘째로는 일괄처리(배치) 방식이며 문자열이 담긴 .BAT라는 확장자를 가진 파일 안에 명령어들을 순서대로 나열해 두면 그 순서대로 명령어 처리기가 실행할 수 있다. cmd.exe는 Windows NT 계열의 운영체제 및 OS/2에서 쓰이며, Windows NT 계열의 운영 체제에서는 OS 상에서 도스를 실행할 수는 없지만 가상 도스 머신을 이용하여 DOS 응용 프로그램들이 실행될 때 호환성을 제공하기 위해 쓰였다. 64비트 Windows에는 들어가지 않는다.
2. 내부 명령어
모든 명령어는 마지막 줄에 ↵ Enter 키가 눌린 뒤에만 실행된다. COMMAND.COM은 대소문자를 구별하지 않기 때문에 어느 문자열이나 대소문자가 섞여 있어도 같은 것으로 인식한다. 이를테면, dir, DIR, DiR, dIr, diR 모두 똑같이 동작한다.[1]
3. 파일 시스템 명령어
COMMAND.COM의 주 기능으로 여러 파일과 함께 동작할 수 있는 수많은 내장 명령어를 들 수 있다.
4. 제어 구조
제어 구조는 배치 파일 안에서 대부분 쓰인다.
- :레이블 GOTO의 대상을 정의한다.
- FOR 되풀이: 지정된 파일 그룹의 각 실행은 반복한다.
- GOTO: 지정된 레이블로 실행 위치를 이동한다. 레이블은 콜론(:likethis)과 함께 줄 맨 처음에 지정된다.
- REM 주석: 실행을 무시할 문자열이다.
- IF: 프로그램의 실행 조건문이다. "IF EXIST F.EXE GOTO a"는 F.EXE 파일이 존재하면 a 레이블로 이동하라는 뜻이 된다.
- CALL: 배치 파일의 실행을 멈추고 다른 곳으로 돌아갔다가 계속 진행한다.
- EXIT: COMMAN.COM에서 빠져나와서 프로그램으로 돌아온다.
- SHIFT: 각 명령 줄 변수를 한 칸 뒤로 이동한다 (예: %0을 %1로, %1을 %2로, 등. )
5. 변수
COMMAND.COM을 위한 배치 파일들은 다음의 네 가지 변수를 사용한다고 말할 수 있다:
- ERRORLEVEL
- 환경 변수들
- 명령 줄 매개변수
- "For" 변수들
6. 리다이렉션과 파일
- 명령어 < 파일이름: 파일/장치에서 표준 입력을 리다이렉트한다.
- 명령어 > 파일이름: 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 덮어씌운다.
- 명령어 >> 파일이름 표준 출력을 파일로 리다이렉트한다. 대상 파일이 있으면 그 아래 줄부터 추가한다.
- 명령어1 | 명령어2 "명령어 1"의 표준 출력을 "명령어2"의 표준 입력으로 파이프 처리한다.
7. 버그 및 제한
명령 줄의 길이는 최대 128 문자이다. 명령어를 실행할 때 언제나 참 값을 반환한다.
8. 기타
MS-DOS가 주력 운영체제였던 MS-DOS 6.x 이전까지[4] 파워 유저들은 COMMAND.COM 대신 서드 파티 셸인 4DOS(파일명 4DOS.COM)을 쓰기도 했었다. 4DOS 전용의 명령어도 있었으며, 그것을 이용한 배치파일의 처리 등을 통해 처리속도를 올릴 수도 있었다. 또 같은 명령어라도 기능이 다르다. 예를 들면 DIR 명령어를 치면 확장자별로 색이 달리 나오는 등의 차이점이 존재한다. INI 파일의 편집을 통해 설정을 편집하고 저장할 수 있었다. 당연히 현재는 업데이트가 안 되고 있지만 최종 버전을 개발사 JP Software의 홈페이지에서 무료로 다운로드 받을 수 있다. 소스 코드도 오픈 소스가 돼서 변형된 MIT 라이선스를 적용하고 있다.# 그리고 JP Software는 4DOS의 Windows NT용 후속작인 Take Command(구칭 4DOS for Windows NT, 줄여서 4NT)라는 상용 프로그램을 개발해 현재도 판매 중이다. 하지만 이 프로그램은 과거 4DOS 같은 인지도를 누리지는 못하고 있다.
확장자인 COM이 TLD의 일종인 .com과 같은 철자인데 실제 이 주소로 접속하면 3M의 코맨드(Command) 브랜드 홈페이지가 나온다.
9. 관련 문서
[1] cmd.exe 도 같다[2] 디렉터리까지 완전히 복사하는 외부 명령어 XCOPY도 있다.[3] Windows 9x 부터는 hbios또는 mshbios /u만 입력해줘도 알아서 chcp 437로 동작된다[4] Windows 9x 계열은 MS-DOS 7.x~8.x를 하부 구조로 하고 있었으나, 이 시점부터 실질적으로는 컴퓨터 사용자들이 MS-DOS 모드에서 뭔가를 작업하는 경우는 거의 없어졌다.