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