|
Win2000/XP中的命令行
Updated:2006-05-22 Windows2000/XP所缺省支持的命令行環(huán)境主要有兩個:cmd.exe(以下簡稱CMD)和command.com(以下簡稱COMMAND),盡管它們許多方面與DOS很相似,但它們都不是DOS。它們只是操作系統(tǒng)Windows的外殼界面,而DOS(例如MS-DOS、FreeDOS等)則是獨立的操作系統(tǒng)。 CMD是最常用的命令行環(huán)境,提供對系統(tǒng)中所有命令行程序的支持,包括32位PE格式的控制臺程序和16位MZ格式的DOS程序;但它本身是一個32位的PE程序,所以在運行16位DOS程序前需要模擬一個環(huán)境,那就是“NT下的DOS虛擬機(NT Virtual DOS Machine,簡稱NTVDM)”,由%SystemRoot%\system32下的ntvdm.exe提供支持。因此,當(dāng)我們剛剛打開CMD時,進(jìn)程管理器中會顯示出cmd.exe進(jìn)程,而當(dāng)在其中運行了一個16位的DOS程序后(比如debug),又會多出一個ntvdm.exe進(jìn)程。 COMMAND是運行16位DOS程序的兼容性命令行環(huán)境,這個環(huán)境仍然由ntvdm.exe提供,而COMMAND不再是一個獨立的“命令解釋器”,而只是一個為了與低版本系統(tǒng)相兼容,而設(shè)計出的一個16位命令行環(huán)境的入口。所以,在運行COMMAND后,進(jìn)程管理器只有一個ntvdm.exe進(jìn)程,而不會有command.com進(jìn)程。 CMD vs COMMAND 與COMMAND相比,CMD缺省提供了更多的命令行特性,比如多國語言顯示和輸入法(代碼頁)、更完善的字體(TrueType)、可以滾動瀏覽的窗口(屏幕緩沖區(qū))、命令行歷史記錄和宏命令(DOSKEY)、文件和目錄名自動完成、功能增強的內(nèi)部命令(命令擴展)、實時更新的環(huán)境變量(延遲擴展)等等,這些特性在啟動16位程序后將失效。 與CMD相比,COMMAND更像一個虛擬的PC機,許多運行16位程序所需要的硬件和軟件環(huán)境都可以通過它模擬出來。它的啟動過程與DOS相似,通過%SystemRoot%\system32\config.nt配置內(nèi)存環(huán)境并加載所需要的硬件驅(qū)動,通過%SystemRoot%\system32\autoexec.nt執(zhí)行某些啟動虛擬環(huán)境時需要自動執(zhí)行的任務(wù)。 命令行中的中文 Windows2000/XP簡體中文版的CMD雖然缺省地支持中文代碼頁(936),但是這只是對32位程序而言;在使用了16位程序后,由于ntvdm.exe的影響,代碼頁會被強制切換回英文(437),因而不僅無法正常顯示中文,并經(jīng)常伴隨著“Invalid keyboard code specified”的錯誤提示;而COMMAND則僅支持英文代碼頁,無法使用chcp進(jìn)行代碼頁的切換。 解決這個問題的辦法是graftabl.exe,這個啟用在圖形模式下顯示擴展字符集的功能的工具,可以使16位程序處在英文代碼頁環(huán)境下仍然可以顯示中文。 如果在CMD中,首先運行chcp 437將內(nèi)部代碼頁切換為英文,再運行g(shù)raftabl 936啟用中文字符集顯示,此后無論是否運行16位程序,則輸出代碼頁均為中文,但此時仍無法使用中文輸入法輸入中文。 如果在COMMAND中,則內(nèi)部代碼頁已為英文,可直接運行g(shù)raftabl 936啟用中文字符集顯示,此時可在COMMAND中顯示中文,但也無法輸入中文。 如果在批處理腳本中,則預(yù)先寫入chcp 437>nul和graftabl 936>nul兩句,可以保證以后運行16位程序時正常地顯示中文。 其它重要的命令行 “故障恢復(fù)控制臺”是Windows2000/XP安裝光盤上提供的命令行環(huán)境,主要用于修復(fù)系統(tǒng)故障的修復(fù),缺省并不被安裝到系統(tǒng)中。 “PowerShell”是下一代Windows的命令行工具,將是CMD的替代品,但目前仍沒有列入到Windows2000/XP的缺省配置中,它需要.Net框架2.0的支持。 “微軟管理規(guī)范命令行”提供了到 WMI 的簡單接口,這樣即可利用 WMI 管理運行 Microsoft Windows 的計算機,提供了命令行或腳本方式瀏覽和管理系統(tǒng)資源的便捷方式,它是WindowsXP所帶來的新工具,第一次運行時會自動進(jìn)行初始化安裝配置。 相關(guān)的概念 命令行解釋器(Command Processor/Command Interpreter) 命令行解釋器是一個單獨的軟件程序,它可以在用戶和操作系統(tǒng)之間提供直接的通訊。非圖形命令行解釋器用戶界面提供運行基于字符的應(yīng)用程序和實用程序的環(huán)境。命令行解釋器通過使用類似于 MS-DOS 命令解釋程序 command.com 的各個字符來執(zhí)行程序并在屏幕上顯示其輸出。Windows 服務(wù)器操作系統(tǒng)(NT)命令行解釋器使用命令解釋程序 cmd.exe(該程序加載應(yīng)用程序并指示應(yīng)用程序之間的信息流動)將用戶輸入轉(zhuǎn)換為操作系統(tǒng)可理解的形式。 命令提示符(Command Prompt) 1、命令行解釋器cmd.exe的快捷方式,它可以打開一個CMD窗口,一般位于開始菜單的“附件”中; 2、命令行中輸入每條命令前的提示文字,通常為當(dāng)前所在路徑信息,可以通過環(huán)境變量PROMPT來修改; 外殼/界面(Shell/Interface) 操作系統(tǒng)或其他系統(tǒng)中負(fù)責(zé)實現(xiàn)用戶與系統(tǒng)內(nèi)核交互的程序或模塊。典型地,資源瀏覽器(explorer.exe)和命令行解釋器(cmd.exe)都是Windows系統(tǒng)的外殼,前者是屬于圖形化界面(Graphic User Interface, GUI),后者則是命令行界面(Command Line Interface, CLI)。 控制臺(Console) 1、對系統(tǒng)進(jìn)行集約化控制和參數(shù)配置的環(huán)境。例如,圖形界面的控制臺有“微軟管理控制臺(Microsoft Management Console,MMC)”,命令行界面的有“命令行解釋器(cmd)”和“微軟管理規(guī)范命令行(wmic)”。 2、命令行環(huán)境下的輸入輸出設(shè)備,代號為con,它通??梢钥醋魇擎I盤和屏幕的組合。 |
|
|