COMMAND.COM

来自维基百科,自由的百科全书

COMMAND.COM

COMMAND.COM是MS-DOSWindows 95Windows 98Windows 98SEWindows Me下預設的命令列直譯器。在DOS環境下,它也是預設使用者介面。它一般還是系統啟動後執行的第一個程式(即init),因此負責執行AUTOEXEC.BAT設定檔以設定系統環境,也是所有處理程序的父處理程序。

快速預覽 其他名稱, 開發者 ...
COMMAND.COM
Thumb
Windows 8上的COMMAND.COM
其他名稱MS-DOS Prompt,
Windows Command Interpreter
開發者Seattle Computer Products, IBM, Microsoft, The Software Link, Datalight, Novell, Caldera
首次發布1980年,​45年前​(1980
程式語言x86 組合語言[1]
作業系統
平台16位元 x86
繼任cmd.exe
類型命令列直譯器
關閉
Thumb
command.com在Windows 95上的Windows控制台里執行(MS-DOS命令提示字元)

COMMAND.COM在OS/2Windows 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+CCtrl+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-DOSHILOAD)。
LOCK
允許外部程式執行低層磁碟訪問(僅MS-DOS 7.1Windows 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
顯示卷宗的資訊。

批次處理命令

控制結構多用於批次檔中,即使也可以在互動模式下使用。[4][3]

:label
定義GOTO的目標。
CALL
執行另一個批次檔,然後返回到原檔案並繼續。
FOR
迭代:為每一個特定組的檔案重複一個命令。
GOTO
將執行過程強行跳轉到一個特定標籤。標籤在一行的開始處指定,以冒號開始(:likethis)。
IF
條件語句,建立程式分支。
PAUSE
暫停程式執行,向使用者顯示訊息「按任意鍵繼續」。
REM
注釋:此命令後所有文字被忽略。
SHIFT
將每個可換位參數(Replacement parameters)以其後一個替代(即用%1替代%0,用%2替代%1等)

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 還支援一系列系統環境變數英語System Information Variable,後來 Novell DOS 7OpenDOS 7.01DR-DOS 7.02 也跟進了這個功能[4][10][3],雖然它們所支援的變數名幾乎完全不同。

重新導向、管道及連接

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

command < filename
從一個檔案或裝置重新導向標準輸入
command > filename
重新導向標準輸出,若檔案存在則覆蓋目的檔
command >> filename
重新導向標準輸出,若檔案存在則追加到目的檔結尾
command1 | command2
command1標準輸出管道至command2標準輸入
command1command2
由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 DOSMultiuser 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英語ReBoot中(該劇的背景發生在電腦內部),系統(相當於城市)的領導者被稱為 COMMAND.COM。

參見

  • UEFI Shell英語UEFI#UEFI_shell(UEFI Shell參考了大量來自COMMAND.COM的指令)
  • IBMBIO.COM英語IBMBIO.COM/ IO.SYS英語IO.SYS (starts the command processor as the first process)
  • SHELL (CONFIG.SYS directive)英語CONFIG.SYS#SHELL (to override default command processor)
  • COMSPEC (環境變數)英語COMSPEC(由COMMAND.COM設定,reload transient portion of itself)
  • CMDLINE (環境變數)英語Environment_variable#%CMDLINE%(由COMMAND.COM設定,用於與外部程式傳遞較長的命令列)
  • 4DOS英語4DOS / NDOS英語4DOS#NDOS (第三方的命令處理器)
  • DOSSHELL英語DOS_Shell / ViewMAX英語ViewMAX (另一種 DOS shells)
  • MS-DOS命令列表
  • 不同命令列的比較英語Comparison_of_command_shells
  • Concurrent DOS英語Multiuser_DOS#Concurrent_DOS/Multiuser DOS英語Multiuser_DOS/REAL/32英語Multiuser_DOS#REAL/32 (有相似的命令處理器,但不叫COMMAND.COM)
  • PC-MOS/386英語PC-MOS/386 (有相似的命令處理器,也叫COMMAND.COM)
  • Transient Program Area英語CP/M#Transient_Program_Area (TPA) (area available for use either by the running application or the transient portion of COMMAND.COM)
  • SpartaDOS X英語SpartaDOS_X (一個用於Atari電腦的相似實現)

參考資料

延伸閱讀

外部連結

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.