COMMAND.COM
来自维基百科,自由的百科全书
COMMAND.COM是MS-DOS、Windows 95、Windows 98、Windows 98SE和Windows Me下默認的命令行解釋器。在DOS環境下,它也是默認用戶界面。它一般還是系統啟動後運行的第一個程序(即init),因此負責運行AUTOEXEC.BAT配置文件以設置系統環境,也是所有進程的父進程。
![]() |
![]() Windows 8上的COMMAND.COM | |
其他名稱 | MS-DOS Prompt, Windows Command Interpreter |
---|---|
開發者 | Seattle Computer Products, IBM, Microsoft, The Software Link, Datalight, Novell, Caldera |
首次發布 | 1980年 |
編程語言 | x86 匯編語言[1] |
操作系統 |
|
平台 | 16位 x86 |
繼任 | cmd.exe |
類型 | 命令行解釋器 |

COMMAND.COM在OS/2和Windows NT上的繼任者是cmd.exe。即便如此,COMMAND.COM在這些系統的IA-32版本上的DOS虛擬機中仍然可用。
文件名COMMAND.COM也被Disk Control Program (DCP)——前東德公司VEB Robotron發行的MS-DOS變體使用。[2]
FreeDOS下與之兼容的命令處理程序有時也稱作FreeCom。
COMMAND.COM是DOS程序。由COMMAND.COM啟動的程序都是DOS程序,調用DOS API與磁盤操作系統通信。
操作模式
作為一個用戶界面,COMMAND.COM有兩種截然不同的操作模式。第一種是交互模式,用戶輸入的指令會被立即執行;第二種是批處理模式,負責執行存儲在名稱以.BAT結尾文本文件中的一組預定義命令。
內部命令
內部命令是直接存儲於COMMAND.COM二進制文件中的命令。因此,它們一直可用,但只能直接執行於命令直譯器。
當↵ Enter鍵在一行末尾按下後,所有命令才被執行。COMMAND.COM不區分大小寫,也就是說命令可以按照任意大小寫組合輸入。
- BREAK
- 通過Ctrl+C或Ctrl+Break控制程序中斷。
- CHCP
- 顯示或更改當前系統的代碼頁。
- CHDIR, CD
- 更改當前工作目錄或顯示當前處於的目錄。
- CLS
- 清除屏幕顯示。
- COPY
- 將一個文件複製到另一個位置(若目標文件已存在,MS-DOS會詢問是否替換)。(另請參見XCOPY,一個可以複製目錄樹的外部命令)
- CTTY
- 定義輸入輸出所用的設備。
- DATE
- 顯示和設置系統日期。
- DEL, ERASE
- 刪除一個文件。在對一個目錄操作時,僅刪除目錄下的所有文件。與之相對,外部命令command不僅刪除目錄下的全部子目錄及所有文件,也刪除目錄本身。
- DIR
- 列出指定目錄下的文件。
- ECHO
- 切換文本顯示開啟(
ECHO ON
) 或關閉(ECHO OFF
)。也用於在屏幕上顯示字符(ECHO text
)。 - EXIT
- 退出COMMAND.COM並返回到啟動它的程序。
- LFNFOR
- 開啟/關閉FOR命令返回長文件名的功能(Windows 9x)。
- LOADHIGH, LH
- 將一個程序載入內存的高地址區域(相當於DR-DOS的
HILOAD
)。 - 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.[3]
- TYPE
- 在控制台上顯示文件內容。
- UNLOCK
- 關閉低層磁盤訪問(僅MS-DOS 7.1和Windows 9x)。
- VER
- 顯示操作系統版本。
- VERIFY
- 開啟/關閉文件寫入驗證。
- VOL
- 顯示卷宗的信息。
批處理命令
IF命令
在退出的時候,所有外部命令都會向調用者給出一個介於 0 到 255 之間的返回碼。絕大多數程序對於它們的返回碼有一些約定,例如使用 0 表示成功執行。[5][6][7][8]
如果程序是由 COMMAND.COM 調用的,那麼使用 ERRORLEVEL 作為條件句的 IF 內部命令可以用於判斷最後調用的外部程序的錯誤狀態。
在 COMMAND.COM 中,內部命令不產生新的值。
變量
COMMAND.COM批處理文件允許四種變量類型:
- 環境變量:形如
%VARIABLE%
,使用 SET 語句賦值。在 DOS 3 之前,COMMAND.COM 僅會在批處理模式中展開環境變量,或者說在命令提示符中不能使用。[來源請求] - 可換位參數:形如
%0
,%1
...%9
,默認包含命令名稱和傳遞給腳本的前九個命令行參數(例如,如果調用命令「myscript.bat John Doe
」,那麼%0
是 「myscript.bat
」,%1
是「John
」,%2
是「Doe
」)。第九個之後的參數可以使用 SHIFT 語句移動到前九個的範圍內。 - 循環變量:在批處理文件中形如
%%a
,使用於循環中。這些變量僅由一個特定的 FOR 語句定義,然後在該語句中遍歷一系列給定的值。 - 在 4DOS 3.00 及其後續版本[9]和 Multiuser DOS[3] 中,COMMAND.COM 還支持一系列系統環境變量,後來 Novell DOS 7、OpenDOS 7.01、DR-DOS 7.02 也跟進了這個功能[4][10][3],雖然它們所支持的變量名幾乎完全不同。
重定向、管道及連接
由於DOS是單用戶操作系統,管道由按順序執行多個命令並重定向到臨時文件(或從臨時文件重定向)實現。COMMAND.COM不支持重定向到標準錯誤輸出。
command < filename
- 從一個文件或設備重定向標準輸入
command > filename
- 重定向標準輸出,若文件存在則覆蓋目標文件
command >> filename
- 重定向標準輸出,若文件存在則追加到目標文件結尾
command1 | command2
- 將command1的標準輸出管道至command2的標準輸入
command1 ¶ command2
- 由ASCII-20(¶, 用 Ctrl+T輸入)分隔的命令將被連續執行(即命令的「連接」)。[3] 也就是說,command1執行完畢後才會執行command2。[3] 這是MS-DOS/PC DOS 5.0及更高的COMMAND.COM中一個未在文檔中寫明的功能。[3] 這項功能也得到Windows NT系列與DR-DOS 7.07下的COMMAND.COM支持。DR-DOS下所有版本的COMMAND.COM支持一個類似的內部函數,但由感嘆號 (!) 調用(一項最初由Concurrent DOS和Multiuser DOS衍生的功能)。 然而,在單用戶命令行環境下,這個功能只在內部(如內置的"!DATE!TIME"啟動腳本)或間接通過DOSKEY的$T參數可用,以避免因 !可作為有效文件名字符產生問題。[3] 4DOS支持可配置的命令行分隔符(4DOS.INI CommandSep= 或 SETDOS /C),默認為「^」。[9]在更高版本的Windows NT下,COMMAND.COM還支持
&
分隔符,以提供與OS/2及Windows NT系列cmd語法的兼容性(然而cmd不支持¶分隔符)。[9]
限制
交互模式下命令行長度不得超過126字符。[11][12][13]在MS-DOS 6.2.2中,交互模式的命令行長度限制為127字符。
流行文化
當終結者重新啟動時,在終結者的HUD視圖中和機械戰警的內部視圖中顯示有「正在加載 COMMAND.COM」(Loading COMMAND.COM)。
在計算機製作的動畫連續劇ReBoot中(該劇的背景發生在計算機內部),系統(相當於城市)的領導者被稱為 COMMAND.COM。
參見
- UEFI Shell(UEFI Shell參考了大量來自COMMAND.COM的指令)
- IBMBIO.COM/ IO.SYS (starts the command processor as the first process)
- SHELL (CONFIG.SYS directive) (to override default command processor)
- COMSPEC (環境變量)(由COMMAND.COM設置,reload transient portion of itself)
- CMDLINE (環境變量)(由COMMAND.COM設置,用於與外部程序傳遞較長的命令行)
- 4DOS / NDOS (第三方的命令處理器)
- DOSSHELL / ViewMAX (另一種 DOS shells)
- MS-DOS命令列表
- 不同命令行的比較
- Concurrent DOS/Multiuser DOS/REAL/32 (有相似的命令處理器,但不叫COMMAND.COM)
- PC-MOS/386 (有相似的命令處理器,也叫COMMAND.COM)
- Transient Program Area (TPA) (area available for use either by the running application or the transient portion of COMMAND.COM)
- SpartaDOS X (一個用於Atari電腦的相似實現)
參考資料
延伸閱讀
外部連結
Wikiwand - on
Seamless Wikipedia browsing. On steroids.