COMMAND.COM

COMMAND.COM 是 MS-DOS、Windows 95、Windows 98、Windows 98SE 和 Windows Me 下預設的命令列直譯器。在 DOS 環境下，它也是預設使用者介面。它一般還是系統啟動後執行的第一個程式（即 init），因此負責執行 AUTOEXEC.BAT 配置檔案以設定系統環境，也是所有程序的父程序。

COMMAND.COM 在 OS/2 和 Windows NT 上的繼任者是 cmd.exe。即便如此，COMMAND.COM 在這些系統的 IA-32 版本上的 DOS 虛擬機器中仍然可用。

檔名也被 (DCP)—— 前東德公司 VEB Robotron 發行的 MS-DOS 變體使用。

FreeDOS 下與之相容的命令處理程式有時也稱作 FreeCom。

COMMAND.COM 是 DOS 程式。由 COMMAND.COM 啟動的程式都是 DOS 程式，呼叫 DOS API 與磁碟作業系統通訊。

操作模式

作為一個使用者介面，COMMAND.COM 有兩種截然不同的操作模式。第一種是互動模式，使用者輸入的指令會被立即執行；第二種是批處理模式，負責執行儲存在名稱以.BAT 結尾文字檔案中的一組預定義命令。

內部命令

內部命令是直接儲存於 COMMAND.COM 二進位制檔案中的命令。因此，它們一直可用，但只能直接執行於命令直譯器。

當鍵在一行末尾按下後，所有命令才被執行。COMMAND.COM 不區分大小寫，也就是說命令可以按照任意大小寫組合輸入。

 BREAK: 透過或控制程式中斷。

 CHCP: 顯示或更改當前系統的內碼表。

 CHDIR, CD: 更改當前工作目錄或顯示當前處於的目錄。

 CLS: 清除螢幕顯示。

 COPY: 將一個檔案複製到另一個位置（若目標檔案已存在，MS-DOS 會詢問是否替換）。（另請參見 XCOPY，一個可以複製目錄樹的外部命令）

 CTTY: 定義輸入輸出所用的裝置。

 DATE: 顯示和設定系統日期。

 DEL, ERASE: 刪除一個檔案。在對一個目錄操作時，僅刪除目錄下的所有檔案。與之相對，外部命令 command 不僅刪除目錄下的全部子目錄及所有檔案，也刪除目錄本身。

 DIR: 列出指定目錄下的檔案。

 ECHO: 切換文字顯示開啟 或關閉。也用於在螢幕上顯示字元。

 EXIT: 退出 COMMAND.COM 並返回到啟動它的程式。

 LFNFOR: 開啟 / 關閉 FOR 命令返回長檔名的功能（Windows 9x）。

 LOADHIGH, LH: 將一個程式載入記憶體的高地址區域（相當於 DR-DOS 的）。

 LOCK: 允許外部程式執行低層磁碟訪問（僅 MS-DOS 7.1 和 Windows 9x）。

 MKDIR，MD: 新建一個目錄。

 PATH: 顯示或更改控制 COMMAND.COM 查詢可執行檔案位置的 PATH 環境變數值。

 PROMPT: 顯示或更改控制命令列外觀的 PROMPT 環境變數值。

 RENAME, REN: 重新命名一個檔案或目錄。

 RMDIR, RD: 刪除一個空目錄。

 SET: 設定一個環境變數的值；無引數時，顯示全部已定義的環境變數。

 TIME: 顯示和設定系統時間。

 TRUENAME: Display the fully expanded physical name of a file, resolving ASSIGN, JOIN and SUBST logical filesystem mappings.

 TYPE: 在控制檯上顯示檔案內容。

 UNLOCK: 關閉低層磁碟訪問（僅 MS-DOS 7.1 和 Windows 9x）。

 VER: 顯示作業系統版本。

 VERIFY: 開啟 / 關閉檔案寫入驗證。

 VOL: 顯示卷宗的資訊。

批處理命令

控制結構多用於批處理檔案中，即使也可以在互動模式下使用。

 label: 定義 GOTO 的目標。

 CALL: 執行另一個批處理檔案，然後返回到原檔案並繼續。

 FOR: 迭代：為每一個特定組的檔案重複一個命令。

 GOTO: 將執行過程強行跳轉到一個特定標籤。標籤在一行的開始處指定，以冒號開始。

 IF: 條件語句，建立程式分支。

 PAUSE: 暫停程式執行，向用戶顯示訊息 “按任意鍵繼續”。

 REM: 註釋：此命令後所有文字被忽略。

 SHIFT: 將每個可換位引數（Replacement parameters）以其後一個替代（即用替代，用替代等）

IF 命令

在退出的時候，所有外部命令都會向呼叫者給出一個介於 0 到 255 之間的返回碼。絕大多數程式對於它們的返回碼有一些約定，例如使用 0 表示成功執行。

如果程式是由 COMMAND.COM 呼叫的，那麼使用 ERRORLEVEL 作為條件句的 IF 內部命令可以用於判斷最後呼叫的外部程式的錯誤狀態。

在 COMMAND.COM 中，內部命令不產生新的值。

變數

COMMAND.COM 批處理檔案允許四種變數型別：

環境變數：形如 ，使用 SET 語句賦值。在 DOS 3 之前，COMMAND.COM 僅會在批處理模式中展開環境變數，或者說在命令提示符中不能使用。
可換位引數：形如，...，預設包含命令名稱和傳遞給指令碼的前九個命令列引數（例如，如果呼叫命令 “”，那麼 是 “”， 是 “”， 是 “”）。第九個之後的引數可以使用 SHIFT 語句移動到前九個的範圍內。
迴圈變數：在批處理檔案中形如 ，使用於迴圈中。這些變數僅由一個特定的 FOR 語句定義，然後在該語句中遍歷一系列給定的值。
在 4DOS 3.00 及其後續版本和 Multiuser DOS 中，COMMAND.COM 還支援一系列，後來 Novell DOS 7、OpenDOS 7.01、DR-DOS 7.02 也跟進了這個功能，雖然它們所支援的變數名幾乎完全不同。

重定向、管道及連線

由於 DOS 是單使用者作業系統，管道由按順序執行多個命令並重定向到臨時檔案（或從臨時檔案重定向）實現。COMMAND.COM 不支援重定向到標準錯誤輸出。

 command : 從一個檔案或裝置重定向標準輸入

 command > filename : 重定向標準輸出，若檔案存在則覆蓋目標檔案

 command >> filename : 重定向標準輸出，若檔案存在則追加到目標檔案結尾

 command1 | command2 : 將 command1 的標準輸出管道至 command2 的標準輸入

 command1 ¶ command2

 由 ASCII-20（¶, 用 輸入）分隔的命令將被連續執行（即命令的 “連線”）。 也就是說，command1 執行完畢後才會執行 command2。 這是 MS-DOS/PC DOS 5.0 及更高的 COMMAND.COM 中一個未在文件中寫明的功能。 這項功能也得到 Windows NT 系列與 DR-DOS 7.07 下的 COMMAND.COM 支援。DR-DOS 下所有版本的 COMMAND.COM 支援一個類似的內部函式，但由感嘆號 (!) 呼叫（一項最初由 Concurrent DOS 和 Multiuser DOS 衍生的功能）。 然而，在單使用者命令列環境下，這個功能只在內部（如內建的 "!DATE!TIME" 啟動指令碼）或間接透過 DOSKEY 的 $T 引數可用，以避免因！可作為有效檔名字元產生問題。 4DOS 支援可配置的命令列分隔符（4DOS.INI CommandSep= 或 SETDOS /C）, 預設為 “^”。在更高版本的 Windows NT 下，COMMAND.COM 還支援分隔符，以提供與 OS/2 及 Windows NT 系列 cmd 語法的相容性（然而 cmd 不支援 ¶ 分隔符）。

限制

互動模式下命令列長度不得超過 126 字元。在 MS-DOS 6.2.2 中，互動模式的命令列長度限制為 127 字元。

流行文化

當終結者重新啟動時，在終結者的 HUD 檢視中和機械戰警的內部檢視中顯示有 “正在載入 COMMAND.COM”（Loading COMMAND.COM）。

在計算機制作的動畫連續劇中（該劇的背景發生在計算機內部），系統（相當於城市）的領導者被稱為 COMMAND.COM。