Win2000命令列精華篇(轉)

post0發表於2007-08-11
Win2000命令列精華篇(轉)[@more@]

1.位置及地位特殊

命令列程式已經不專門用Command目錄存放,而是放在32位系統檔案的倉庫重地——Win

2000安裝目錄下的system32子目錄中,由此可知Win2000的命令列命令已經不再是系統的“小

妾”而是被納為“正房”,而且透過檢視system32dllcache目錄可知,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.對系統已掛接的碼錶輸入法的直接支援

以前Win9x的DOS命令提示符下要顯示和輸入漢字,必須單獨啟動中文輸入法,如PDOS95

或UCDOS等其它漢字系統,在Win2000的Cmd.exe命令列下已經可以直接顯示漢字,並可以按圖

形介面完全相同的熱鍵直接呼叫系統中已經安裝的各種碼錶輸入法,如Ctrl+Shift切換輸入

法,Ctrl+Space切換輸入法開關,Shift+Space切換全形與半形狀態,Ctrl+.切換中英文標點

等,使用很方便;不過,該命令列下的輸入法只能在命令列進行輸入,比如開啟了一個Edit

編輯器,輸入法就不起作用了,這不能不說是一個很大的遺憾!

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] [/EN | /EFF] [/FN | /FFF] [/VN | /VFF] [

[/S] [/C | /K] string]

/C 執行字串指定的命令然後中斷;

/K 執行字串指定的命令但保留;

/S 在 /C 或 /K 後修改字串處理;

/Q 關閉回應;

/D 從登錄檔中停用執行AutoRun命令;

/A 使向內部管道或檔案命令的輸出成為ANSI;

/U 使向內部管道或檔案命令的輸出成為Unicode

/T:fg 設定前景/背景顏色(詳細資訊,請見 Color /?);

/EN 啟用命令擴充套件;

/EFF 停用命令擴充套件;

/FN 啟用檔案和目錄名稱完成字元;

/FFF 停用檔案和目錄名稱完成字元;

/VN 將c作為定界符啟動延緩環境變數擴充套件。

/VFF 停用延緩的環境擴充套件。

請注意,如果字串有引號,可以接受用命令分隔符“&&”隔開的多個命令。並且,由

於相容原因,/X與/EN相同,/Y與/EFF相同,並且/R與/C相同。忽略任何其它命令選項。

如果指定了/C或/K,命令選項後的命令列其餘部分將作為命令列處理,在這種情況下,

會使用下列邏輯處理引號字元("):

(1)如果符合下列所有條件,那麼在命令列上的引號字元將被保留:

不帶 /S 命令選項;

整整兩個引號字元;

在兩個引號字元之間沒有特殊字元,特殊字元為下列中的一個: <>()@^|;

在兩個引號字元之間有至少一個空白字元;

在兩個引號字元之間有至少一個可執行檔案的名稱。

(2)否則,老辦法是,看第一個字元是否是一個引號字元,如果是,捨去開頭的字元並刪

除命令列上 的最後一個引號字元,保留最後一個引號字元之後的文字。如果/D未在命令列上

被指定,當CMD.EXE開始時,它會尋找以下REG_SZ/REG_EXPAND_SZ登錄檔變數。如果其中一個

或兩個都存在,這兩個變數會先被執行。

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorAutoRun

HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorAutoRun

命令擴充套件按預設值是啟用的。你也可以使用 /EFF,為某一特定呼叫而停用擴充套件。你可

以在使用者登入會話上啟用或停用cmd.exe所有呼叫的擴充套件,這要透過設定使用Regedit32.exe

的登錄檔中的一個或兩個REG_DWORD值:

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorEnableExtensions

HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorEnableExtensions到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 命令名”。

延遲變數環境擴充套件不按預設值啟用。你可以用/VN或 /VFF命令選項,為CMD.EXE的某

個呼叫而啟用或停用延遲環境變數擴充。你可以在機器上或使用者登入會話上啟用或停用CMD.

EXE所有呼叫的完成,這要透過設定使用Regedit32.exe的登錄檔中的一個或兩個REG_DWORD

值:

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorDelayedExpansion

HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorDelayedExpansion到0x1或0x

0。使用者特定設定比機器設定有優先權。命令列命令選項比登錄檔設定有優先權。

如果延遲環境變數擴充被啟用,驚歎號字元可在執行時間,被用來代替一個環境變數的

數值。

檔案和目錄名完成不按預設值啟用。你可以用/FN或/FFF命令選項,為cmd.exe的某

個呼叫而啟用或停用檔名完成。你可以在機器上或使用者登入會話上啟用或停用cmd.exe所有

呼叫的完成,這要透過設定使用Regedit32.exe 的登錄檔中的一個或兩個REG_DWORD值:

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorCompletionChar

HKEY_LOCAL_MACHINESoftwareMicrosoftCommand ProcessorPathCompletionChar

HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorCompletionChar

HKEY_CURRENT_USERSoftwareMicrosoftCommand ProcessorPathCompletionChar

由一個控制字元的十六進位制值作為一個特定引數(例如,0x4是Ctrl-D,0x6是 Ctrl-F)。

使用者特定設定優先於機器設定。命令列命令選項優先於登錄檔設定。

如果完成是用/FN命令選項啟用的,兩個要使用的控制符是:目錄名字完成用Ctrl-D,

檔名完成用Ctrl-F。要停用登錄檔中的某個字元,請用空格(0x20)的數值,因為此字元不

是控制字元。

如果鍵入兩個控制字元中的一個,完成會被呼叫。完成功能將路徑字元長帶到游標的左

邊,如果沒有萬用字元,將萬用字元附加到左邊,並建立相符的路徑列表。然後,顯示第一個相

符的路徑。如果沒有相符的路徑,則發出嘟嘟聲,不影響顯示。之後,重複按同一個控制字

符會迴圈顯示相符路徑的列表。將 Shift 鍵跟控制字元同時按下,會倒著顯示列表。如果對

該行進行了任何編輯,並再次按下控制字元,儲存的相符路徑的列表會被丟棄,新的會被生

成。如果在檔案和目錄名完成之間命令選項,會發生同樣現象。兩個控制字元之間的唯一區

別是檔案完成字元符合檔案和目錄名,而目錄完成字元只符合目錄名。如果檔案完成被用於

內建式目錄命令(CD、MD或RD),就會使用目錄完成。

將引號用相符路徑括起來,完成程式碼可以正確處理含有空格或其它特殊字元的檔名。

同時,如果備份,然後從行內呼叫檔案完成,完成被呼叫是位於游標右方的文字會被丟棄。

編者按:前邊講了這麼多,主要是從原理上介紹了微軟的一種命令擴充套件和路徑擴充套件,至於

它要完成的功能對於我們大多數電腦愛好這來說是很有趣並且是實用價值的,從小編在http

://查詢的資料得知,自從Windows NT 4.0以來,Windows便具有了和Lin

ux一樣的命令列自動補全的功能,不信將HKEY_LOCAL_MACHINESoftwareMicrosoft Comma

nd ProsessorCompletionChar的鍵值改為9,然後切換到命令列視窗,輸入cd c:wind,然

後按一個Tab試一下,呵呵……系統自動為你輸入了cd c:windows。

8.一個有趣的Bug

在命令列(甚至在其它如Word2000等圖形介面編輯器中!)呼叫任何一種中文輸入法後

,如果在全形、中文標點狀態下輸入一次“……”(可按Shift+^直接從鍵盤輸入),再輸入

大寫的任意英文字母或按Shift鍵輸入某些特殊符號,則每個字元後面會自動新增一個“…”

號,如“W…”、“%…”等,不知微軟此舉是何用意?筆者死活想不出這種功能有何用處,

只能解釋為是一個無關緊要的Bug

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-946222/,如需轉載,請註明出處,否則將追究法律責任。

相關文章