1.位置及地位特殊
命令列程式已經不專門用Command目錄存放,而是放在32位系統檔案的倉庫重地——Win
2000安裝目錄下的system32子目錄中,由此可知Win2000的命令列命令已經不再是系統的“小
妾”而是被納為“正房”,而且通過查看system32/dllcache目錄可知,Win2000還將它們列
入了受保護的系統檔案之列,一旦system32目錄中的命令列命令受損,就用該dllcache目錄
中的備份隨即恢複;當然由於Win2000是脫胎於WinNT,所以命令列調用主程式已經不是Win9
x時代的command.com,而是類似於NT下的cmd.exe。
2.一些命令只能通過命令列直接執行
如Win9x中的系統檔案掃描器sfc.exe是一個Windows風格的對話方塊介面,而在Win2000中
的這條命令卻必需在命令列狀態手工輸入有關參數才能按要求運行,而運行時又是標準的圖
形介面(1)。
3.命令列視窗的使用與以前大不相同
①複製、粘貼操作不同。在視窗狀態下,已經不再像Win9x的DOS視窗那樣有一條工具列
,因此不少人發現無法在Win2000的命令列視窗中進行複製等操作,其實Win2000的命令列窗
口是支援視窗內容的選定、複製、粘貼等操作的,但有關命令卻給隱藏了起來。用滑鼠對窗
口內容的直接操作只能夠是選取,即按下滑鼠左鍵拖動時其內容會反白顯示,如果再按CTRL
+C命令則無法將選取內容複寫到剪貼簿,而必須在視窗的標題列上點擊滑鼠右鍵,然後選擇
“編輯”,這時才就會看到有關複製、粘貼等操作命令的菜單(2)。
②可以前後瀏覽每一步操作螢幕所顯示的內容。這在全螢幕狀態下是不行的,必需使用
Alt+Enter鍵切換到視窗狀態,這時視窗右側會出現一個捲軸,拖動捲軸就可前後任意瀏
覽了,但如操作的顯示結果太多,則超過記憶體緩衝的內容會按照FIFO(First in First out
,先進先出)原則自動丟棄,使用cls命令後可以同時清除螢幕及緩衝區的內容。
4.添加了大量快捷功能鍵和強大方便的類doskey功能
Win2000的命令列狀態下,通過mem/c看不到記憶體中自動載入doskey.exe命令的跡象,但
的確具備極強大的類似傳統的doskey的功能,比如:
PageUp、PageDown:重新調用最近的兩條命令
↑↓:在曆史命令中按先後順序逐條重新調用命令;
←→:在命令列移動游標,可以對已經輸入的命令列進行編輯;
Insert:切換命令列編輯的插入與改寫狀態;
Home、End:快速移動游標到命令列的開頭或結尾;
Delete:刪除游標後面的字元;
Enter:複製視窗內選定的內容(用之取代CTRL+C命令);
F7:顯示曆史命令列表,可從列表中方便地選取曾經使用過的命令;
F9:輸入命令號碼功能,直接輸入曆史命令的編號就可直接使用該命令。
其它從F1~F9鍵都分別定義了不同的功能,具體操作時一試便知。
5.對系統已掛接的碼錶IME的直接支援
以前Win9x的DOS命令提示字元下要顯示和輸入漢字,必須單獨啟動中文IME,如PDOS95
或UCDOS等其它漢字系統,在Win2000的Cmd.exe命令列下已經可以直接顯示漢字,並可以按圖
形介面完全相同的熱鍵直接調用系統中已經安裝的各種碼錶IME,如Ctrl+Shift切換輸入
法,Ctrl+Space切換IME開關,Shift+Space切換全形與半形狀態,Ctrl+.切換中英文標點
等,使用很方便;不過,該命令列下的IME只能在命令列進行輸入,比如開啟了一個Edit
編輯器,IME就不起作用了,這不能不說是一個很大的遺憾!
6.新增多條內部命令
Color:設定預設的控制台前景和背景顏色。我們再也不必羨慕其它作業系統豐富的控制
台顏色設定命令了!
用法:Color [attr] 其中attr為指定控制台輸出的顏色屬性
顏色屬性由兩個十六進位數字指定—— 第一個為背景,第二個則為前景。每個數字可以
為以下任何值之一:
如果沒有給定任何參數,該命令會將顏色還原到CMD.EXE啟動時的顏色。這個值來自當前
控制台視窗、/T 命令列命令選項或DefaultColor註冊表值。
如果用相同的前景和背景顏色來執行Color命令,Color命令會將ErrorLevel設定為1。
例如: "Color fc" 在亮白色上產生亮紅色,試著輸入一個“Color 02”,哈哈……你的
螢幕的顯示變成了黑底綠字,再也不是一成不變的黑底白字了。
Pushd:儲存目前的目錄以供Popd命令使用,然後改到指定的目錄。
用法:Pushd [path | ..] 其中path為指定要成為目前的目錄的目錄。
如果命令副檔名被啟用,除了一般磁碟機代號和路徑,Pushd命令還接受網路路徑。如果指
定了網路路徑,Pushd將建立一個指向指定網路資源的臨時磁碟機代號,然後再用剛定義的驅動
器號改變當前的磁碟機和目錄。可以從Z:往下分配臨時磁碟機代號,使用找到的第一個沒有用
過的磁碟機代號。
Popd:命令選項到儲存在Pushd命令裡的目錄。
如果命令副檔名被啟用,從推目錄堆棧Popd磁碟機時,Popd命令會刪除Pushd建立的臨時
磁碟機代號。
SetLocal:開始批次檔中環境改動的本地化操作。在執行SetLocal之後所做的環境改
動只限於批次檔。要還原原先的設定,必須執行EndLocal。達到批次檔結尾時,對
於該批次檔的每個尚未執行的SetLocal命令,都會有一個隱含的EndLocal被執行。
Assoc:顯示或修改副檔名關聯
用法:Assoc [.ext[=[fileType]]]
其中.ext指定跟檔案類型關聯的副檔名,
FileType 指定跟副檔名關聯的檔案類型。
鍵入Assoc而不帶參數,顯示當前檔案關聯。如果只用副檔名調用Assoc,則顯示那
個副檔名的當前檔案關聯。如果不為檔案類型指定任何參數,命令會刪除副檔名的
關聯。
例如:
Assoc .pl=PerlScript
Ftype PerlScript=perl.exe %1 %*
允許你啟用以下Perl指令碼:
script.pl 1 2 3
如果不想鍵入副檔名,則鍵入以下字串:
set PATHEXT=.pl;%PATHEXT%
被啟動的指令碼如下:
script 1 2 3
7.Cmd.exe更加複雜、強大的命令列參數
Cmd.exe有很多命令列參數,具體情況如下:
CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF] [
[/S] [/C | /K] string]
/C 執行字串指定的命令然後中斷;
/K 執行字串指定的命令但保留;
/S 在 /C 或 /K 後修改字串處理;
/Q 關閉回應;
/D 從註冊表中停用執行AutoRun命令;
/A 使向內部管道或檔案命令的輸出成為ANSI;
/U 使向內部管道或檔案命令的輸出成為Unicode
/T:fg 設定前景/背景顏色(詳細資料,請見 Color /?);
/E:ON 啟用命令擴充;
/E:OFF 停用命令擴充;
/F:ON 啟用檔案和目錄名稱完成字元;
/F:OFF 停用檔案和目錄名稱完成字元;
/V:ON 將c作為定界符啟動延緩環境變數擴充。
/V:OFF 停用延緩的環境擴充。
請注意,如果字串有引號,可以接受用命令分隔字元“&&”隔開的多個命令。並且,由
於相容原因,/X與/E:ON相同,/Y與/E:OFF相同,並且/R與/C相同。忽略任何其它命令選項。
如果指定了/C或/K,命令選項後的命令列其餘部分將作為命令列處理,在這種情況下,
會使用下列邏輯處理引號字元("):
(1)如果符合下列所有條件,那麼在命令列上的引號字元將被保留:
不帶 /S 命令選項;
整整兩個引號字元;
在兩個引號字元之間沒有特殊字元,特殊字元為下列中的一個: <>()@^|;
在兩個引號字元之間有至少一個空白字元;
在兩個引號字元之間有至少一個可執行檔的名稱。
(2)否則,老辦法是,看第一個字元是否是一個引號字元,如果是,捨去開頭的字元並刪
除命令列上 的最後一個引號字元,保留最後一個引號字元之後的文字。如果/D未在命令列上
被指定,當CMD.EXE開始時,它會尋找以下REG_SZ/REG_EXPAND_SZ註冊表變數。如果其中一個
或兩個都存在,這兩個變數會先被執行。
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/AutoRun
和
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/AutoRun
命令擴充按預設值是啟用的。你也可以使用 /E:OFF,為某一特定調用而停用擴充。你可
以在使用者登入工作階段上啟用或停用cmd.exe所有調用的擴充,這要通過設定使用Regedit32.exe
的註冊表中的一個或兩個REG_DWORD值:
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/EnableExtensions
和
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/EnableExtensions到0x1或0x
0。使用者特定設定比機器設定有優先權。命令列命令選項比註冊表設定有優先權。
命令列擴充包括對下列命令所做的更改和添加:
Del或Erase、Color、CD或ChDir、MD或MkDir、Prompt、Pushd、Popd、Set、SetLocal、End
Local、IF、For、Call、Shift、Goto、Start(同時包括對外部命令調用所做的更改)、As
soc、Ftype。
有關詳細資料,請鍵入“HELP 命令名”。
延遲變數環境擴充不按預設值啟用。你可以用/V:ON或 /V:OFF命令選項,為CMD.EXE的某
個調用而啟用或停用延遲環境變數擴充。你可以在機器上或使用者登入工作階段上啟用或停用CMD.
EXE所有調用的完成,這要通過設定使用Regedit32.exe的註冊表中的一個或兩個REG_DWORD
值:
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/DelayedExpansion
和
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/DelayedExpansion到0x1或0x
0。使用者特定設定比機器設定有優先權。命令列命令選項比註冊表設定有優先權。
如果延遲環境變數擴充被啟用,驚歎號字元可在執行時間,被用來代替一個環境變數的
數值。
檔案和目錄名完成不按預設值啟用。你可以用/F:ON或/F:OFF命令選項,為cmd.exe的某
個調用而啟用或停用檔案名稱完成。你可以在機器上或使用者登入工作階段上啟用或停用cmd.exe所有
調用的完成,這要通過設定使用Regedit32.exe 的註冊表中的一個或兩個REG_DWORD值:
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/CompletionChar
HKEY_LOCAL_MACHINE/Software/Microsoft/Command Processor/PathCompletionChar
和
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/CompletionChar
HKEY_CURRENT_USER/Software/Microsoft/Command Processor/PathCompletionChar
由一個控制字元的十六進位值作為一個特定參數(例如,0x4是Ctrl-D,0x6是 Ctrl-F)。
使用者特定設定優先於機器設定。命令列命令選項優先於註冊表設定。
如果完成是用/F:ON命令選項啟用的,兩個要使用的控制符是:目錄名字完成用Ctrl-D,
檔案名稱完成用Ctrl-F。要停用註冊表中的某個字元,請用空格(0x20)的數值,因為此字元不
是控制字元。
如果鍵入兩個控制字元中的一個,完成會被調用。完成功能將路徑字元長帶到游標的左
邊,如果沒有萬用字元,將萬用字元附加到左邊,並建立相符的路徑列表。然後,顯示第一個相
符的路徑。如果沒有相符的路徑,則發出嘟嘟聲,不影響顯示。之後,重複按同一個控制字
符會迴圈顯示相符路徑的列表。將 Shift 鍵跟控制字元同步選取,會倒著顯示列表。如果對
該行進行了任何編輯,並再次按下控制字元,儲存的相符路徑的列表會被丟棄,新的會被生
成。如果在檔案和目錄名完成之間命令選項,會發生同樣現象。兩個控制字元之間的唯一區
別是檔案完成字元符合檔案和目錄名,而目錄完成字元只符合目錄名。如果檔案完成被用於
內建式目錄命令(CD、MD或RD),就會使用目錄完成。
將引號用相符路徑括起來,完成代碼可以正確處理含有空格或其它特殊字元的檔案名稱。
同時,如果備份,然後從行內調用檔案完成,完成被調用是位於游標右方的文字會被丟棄。
編者按:前邊講了這麼多,主要是從原理上介紹了微軟的一種命令擴充和路徑擴充,至於
它要完成的功能對於我們大多數電腦愛好這來說是很有趣並且是實用價值的,從小編在http
://www.microsoft.com查詢的資料得知,自從Windows NT 4.0以來,Windows便具有了和Lin
ux一樣的命令列自動補全的功能,不信將HKEY_LOCAL_MACHINE/Software/Microsoft/ Comma
nd Prosessor/CompletionChar的索引值改為9,然後切換到命令列視窗,輸入cd c:/wind,然
後按一個Tab試一下,呵呵……系統自動為你輸入了cd c:/windows。
8.一個有趣的Bug
在命令列(甚至在其它如Word2000等圖形介面編輯器中!)調用任何一種中文IME後
,如果在全形、中文標點狀態下輸入一次“……”(可按Shift+^直接從鍵盤輸入),再輸入
大寫的任意英文字母或按Shift鍵輸入某些特殊符號,則每個字元後面會自動添加一個“…”
號,如“W…”、“%…”等,不知微軟此舉是何用意?筆者死活想不出這種功能有何用處,
只能解釋為是一個無關緊要的Bug。