Windows 指令行基礎 目錄 1. 引言:為什麼要使用指令行在 DOS 時代,人們隻能依靠輸入指令同計算機互交。而現在,微軟的 Windows 作業系統已得到了廣泛使用,我們處理日常事務也大多使用基于圖形使用者界面(GUI ,Graphics User Interface)的應用程式,指令行正在逐漸被人們淡忘。但我們同時也看到,系統自帶的指令行解釋器從 Windows 98 的 command.com 變成 Windows XP 的 cmd.exe ,功能大大增強了。 指令行有它獨特的價值,在某些方面的表現是 GUI 程式無法獲得的,下面舉例來說: 1. Windows 系統有時會出現故障,或是中了病毒、木馬,系統根本無法引導。而整個 DOS 作業系統可裝入一張軟碟,隻要用一張啟動盤就可進入 DOS ,進而進行備份資料、修複系統等工作。如果你不會 DOS 指令,修複系統便無從談起。當然,還有一些别的修複工具,比如 WinPE 、故障恢複控制台等,也能用來修複系統。但 DOS 啟動盤具有制作簡單、體積小等優點。在 DOS 中使用的指令請參考附錄1。 2. Windows 指令行中提供了一系列實用小工具,極為綠色。比如 ping、netstat、diskpart 等指令。這方面可參考“附錄2”。 3. 學習 Windows 指令行,有助于我們更深入地了解 Windows 的工作方式。 4. 很多軟體既有圖形前端,又有指令行版可供選擇。如 7-Zip、WinRAR(兩者都是壓縮軟體)皆有指令行版,微軟的 cabarc(用來制作 CAB 壓縮包)也是指令行程式。使用指令行版的軟體通常具有占用資源少、運作速度快、可通過腳本進行批量處理等優點。 當然,指令行也有其缺點。比如界面不夠美觀,手工輸入指令較為繁瑣(這可以通過一些輸入技巧來彌補,詳見 3.4 節),學習起來較為困難等。 本文涵蓋了 Windows 指令行的各方面的内容,從最簡單的檔案名命名規範到編寫腳本檔案,主要是基礎知識。本文主要是為那些 Windows 指令行新手而寫的,對讀者的技術水準或使用計算機的經曆不做任何要求。 不同的 Windows 在指令行處理上也有細微差異,我用的系統是 Windows XP Home SP2 ,後面一些指令的運作結果也是基于此。 2. 檔案系統基礎計算機内各種資訊,如程式、資料等都是以檔案形式存在的,使用計算機,可以說是對各種檔案的操作管理。檔案系統是 Windows 的一個元件,它能夠讓使用者檢視、組織以及保護儲存設備上的檔案和目錄并與其進行互交。在“我的電腦”中選中任一本地磁盤,單擊右鍵 -> “屬性”,在彈出的“屬性”對話框中可看到該磁盤(分區)的檔案系統。 Windows 中常見的檔案系統有 FAT 、FAT32 、NTFS 、CDFS ,其中 CDFS 用于 CD-ROM ,其他用于磁盤。本文并不讨論檔案系統的詳細情況,欲了解請上網查找。 值得注意的是,Windows XP 是不區分大小寫、但又保留大小寫的作業系統。 2.1 分區與盤符檔案系統是多個檔案的邏輯集合,它位于分區或磁盤上。分區是資訊的容器,如果需要的話,它也可以包含整個實體硬碟。例如,可以整個吃掉一個蘋果 派,也可以切成片,這類似于對硬碟或其他實體儲存設備的操作方式。一片蘋果派類似于磁盤的一個分區,而完整的蘋果派表示将整個硬碟作為一個分區。當然還有 更進階的含義,但是就本章而言,隻是把整個硬碟或硬碟的系統劃分看作分區。我們平時說的C:、D: 等即指磁盤分區,這些磁盤分區可能位于同一塊實體硬碟上,也可能位于不同的兩塊硬碟。C:、D: 等稱為盤符或驅動器号,隻是系統的一種表示符号,可以更改或重新配置設定。一個分區通常隻包含一個檔案系統。2.2 檔案與名稱檔案名稱由檔案名和擴充名組成,兩者由小黑點分隔,擴充名通常是用來表示檔案的類别。Windows 中整個檔案名稱最長 255 個字元(一個中文字算兩個字元);DOS 中,檔案名最長 8 字元,擴充名最長 3 字元,故又稱 DOS 8.3 命名規則。檔案名稱可僅有前半部,即無擴充名,如檔案名稱最短可以是“1”、“C”等。給檔案命名還應注意以下規則: 1. 檔案名不能包含下列任何字元之一(共 9 個):\/:*?"<>|。 2. 不能單獨使用“裝置名”作檔案名。“裝置名”包括:con ,aux ,com0 ~ com9 ,lpt0 ~ lpt9 ,nul ,prn 。 3. 檔案名不區分大小寫,如 A.txt 和 a.TxT 表示同一檔案。 你也許會發現很多檔案沒有擴充名,其實不然。這是因為 Windows 在預設情況下會隐藏大部分檔案的擴充名。如果希望顯示所有檔案的擴充名的話,打開“我的電腦”,“工具”菜單 -> “檔案夾選項”,再在“檢視”頁籤中,去掉“隐藏已知檔案類型的擴充名”。另外,Windows 是根據檔案的擴充名來決定對檔案的操作的,而不是根據内容。例如,把一個文本檔案(txt)的擴充名改為“RM”,再輕按兩下它,Windows 就會調用某個安裝在你電腦上的媒體播放器(如 RealPlayer)來打開它。 2.3 檔案的目錄管理把大量檔案全放在一個目錄裡,作業系統查找一個給定的檔案時就要花較長時間,同時,删除時也易誤删除,對使用者來說極不友善。于是,作業系統采用 了目錄的分級管理。将一個使用者的同一類檔案放在某個單獨的目錄下,和磁盤上所有其他檔案分開來,這樣的目錄檔案使用和管理起來要友善和科學得多。目錄好比書的章、節等不同層次,呈樹形結構。除根目錄外,其他目錄稱為子目錄。子目錄下又可再帶子目錄。左圖是一個樹形目錄結構的例子。 除根目錄外的所有子目錄都有個名字,命名規則同檔案,一般沒有擴充名。 2.4 絕對路徑和相對路徑當我們建立或修改一個檔案時,必須向 Windows 指明這個檔案的位置,這須知道三件事:驅動器、檔案所在目錄和檔案名,這些資訊構成一個路徑。 路徑是由一系列目錄名組成的,這些目錄名之間用“\”分開,也可以把檔案名(檔案名和最後一個目錄也用“\”分開)和驅動器号包括在内。例如:C:\WINDOWS\explorer.exe 。 每個檔案都有一個絕對路徑和一個相對路徑。絕對路徑是指檔案在檔案系統中的準确位置,如 C:\WINDOWS\notepad.exe 。指令行解釋器可以記住一個指定的目錄,稱為目前目錄,相對路徑即指檔案相對于目前目錄的位置。例如,如果使用者在 C:\WINDOWS 目錄下,則 C:\WINDOWS\notepad.exe 的相對路徑是 notepad.exe 。這類似于家庭住址。如果是将自己的位址告訴住在同一座城市的人,可能會說自己住在某條街過去兩條街。這就是相對位址——相對于同一座城市。如果是将自己 的位址告訴其他國家的某個人,就必須說得更加詳細,如中國某個省某個市中的某條街某号以及郵政編碼,這就是絕對位址。相對路徑常用于腳本,且使輸入更簡 便,但是絕對路徑是一個更為安全的選擇,因為它避免了可能出現的歧義。 如果一個路徑是用“\”開始的,Windows 就從根目錄開始找起(絕對路徑),否則就從目前目錄開始找(相對路徑)。 例如,在上圖中,若目前目錄為 a12 ,要訓示子目錄 a122 下的檔案 ms.txt ,可以用路徑 \a1\a12\a122\ms.txt(絕對路徑) 或 a122\ms.txt(相對路徑)。 在“我的電腦”中,“位址欄”顯示的就是目前目錄。如果你看不到位址欄,請找到“檢視”菜單 -> “工具欄”,勾選“位址欄”。如果你的位址欄沒有顯示完整路徑(絕對路徑),請單擊“工具”菜單 -> “檔案夾選項”,再在“檢視”頁籤中,選中“在位址欄中顯示完整路徑”。 3. 基本指令本章将具體地介紹一些指令。你最好能實踐一下本章的内容,這需要使用 Windows 的“指令行解釋器”,該程式在 Windows XP 中是 C:\WINDOWS\system32\cmd.exe 。請打開“開始” -> “程式” -> “附件” -> “指令行提示符”。然後,新視窗中可能會顯示以下内容: 其中“%USERNAME%”代表您目前的使用者名。這裡“>”提示符之前顯示的就是目前目錄。 * 注意以下幾點: 1. Windows 中有兩種指令:内部指令和外部指令。内部指令即内置在指令行解釋器中的指令,不需要額外的程式,如 dir 、copy 等。外部指令是以可執行檔案的形式(擴充名通常為 exe 或 com)存在于磁盤上,這就意味着該程式必須存在,否則 Windows 是找不到該指令的,如 format.com 。 2. 每條指令輸完後須回車,方開始運作,并得到運作結果。指令行解釋器把提示符“>”和Enter鍵間的字元串視為一條指令。如果這字元串确實符合 Windows 指令文法,就執行它,執行完後又回到提示符狀态,否則指令行解釋器給出錯誤資訊。例如: 3. 要學習某個指令,最好的方法是閱讀該指令的聯機幫助。可以輸入“指令名 /?”或“help 指令名”來檢視指令的聯機幫助,例如“format /?”。本章對指令的解說僅限于最基本的用法,欲詳細了解請看聯機幫助。 3.1 目錄操作指令1. cd :Change Directory :改變目前目錄 格式:cd [/D] [盤符:][路徑] 執行個體: 2. 多級目錄之間的轉換 1) 由多級子目錄轉向另一多級子目錄 2) 由根目錄進入深層子目錄 a. 直接進入: b. 逐層進入: 3) 退出深層子目錄 a. 直接傳回根目錄: b. 逐級退出子目錄: 4) 進入同級子目錄,如從 C:\a1\a12 轉至 C:\a1\a11 : 以上執行個體中用到了“..”,這用來表示目前目錄的上級目錄(父目錄)。類似地,一個點“.”表示目前目錄。 另外,直接用 cd 不能切換到其他盤符,要切換到其他盤,可以用 cd /D 或者用“盤符:”,比如 D: 再回車就表示切換到 D 盤。 3. md :Make Directory :建立子目錄 格式:md [盤符:] 建立子目錄路徑 執行個體: 4. rd :Remove Directory :删除子目錄 格式:rd [/S] [/Q] [盤符:]被删除子目錄路徑 執行個體: 說明:1) 隻有空子目錄(不含檔案的)才能被删除(除非用 /S 參數)。 2) 根目錄和目前目錄不能被删除。 3.2 檔案操作指令1. dir :列檔案目錄清單 格式:dir [盤符:][路徑] [/P] [/W] 說明:1) 參數“/P”為分屏顯示,參數“/W”為簡要顯示(隻顯示檔案名,不顯示檔案大小日期等資訊)。 2) 該指令可以使用通配符“*”和“?”,? 代表任一字元,* 代表任一字元串(若幹個字元)。 執行個體: 2. copy :複制檔案 格式:copy 源檔案[+源檔案] [目标檔案] 執行個體: 3. del :删除檔案 格式:del 一個或多個檔案名 執行個體: 4. ren :重命名檔案 格式:ren 原檔案名 新檔案名 * 小結: 1. 本章限于篇幅,隻介紹了一些基本指令,相信您已經有能力自己閱讀幫助文檔。正如前面所提到的,Windows 指令的聯機幫助是了解某個指令的最佳方法。輸入“help”可得到一份常見指令清單。輸入“指令名 /?”或“help 指令名”可以找到指定的聯機幫助頁。聯機幫助可能比較簡短,詳細的說明請檢視 Windows 的“幫助和支援中心”。開始 -> 幫助和支援 -> 最上面的“索引” -> “關鍵字”框中輸入“指令行”回車,然後點選右邊正文部分的最後一行中的“指令行參考”,進入“指令行參考 A-Z”,該參考手冊為每個指令提供了異常詳細的說明和範例,是 Windows 指令的最權威、可信的資料。另外,微軟的網站(http://www.microsoft.com/zh/cn/)上也有相關的幫助資訊。這方面請參考附錄3。 2. 指令的一般格式如下: 指令名 [參數1] [參數2] ... [操作對象1] [操作對象2] ... 使用參數,可開啟指令的某些特定功能。參數和操作對象的順序通常都可任意安排,不過某些情況下也有嚴格的順序要求。例如 dir /w E:\bin 和 dir E:\bin /w 的效果是一樣的。具體順序應參考各指令的幫助文檔。 3. 指令參數中的檔案名一般形式如下: [盤符:][路徑]檔案名[.擴充名] 例如: C:\PA\MUSI.rar C 盤 PA 子目錄中的 rar 檔案 MUSI index.html 目前盤上的 HTML 檔案 index 3.3 通配符使用指令行界面的一個比較有趣的方面在于,能夠使用特定的稱為通配符或元字元(metacharacter)的字元來改變和增強指令的行為。這些字元并不是指令的一部分,但它們是指令行解釋器的特性,能夠讓使用者建立複雜的操作。 正如上一節提到過的,Windows 中有兩種通配符:問号(?) 比對檔案名中的任何一個字元,星号(*)比對檔案名中的零個或多個字元。可以在一個指令中綜合使用這些通配符以定位多個檔案,或者在不記得檔案的全名時找到該檔案。例如,假定目前目錄中含有檔案: 表3-1給出了比對執行個體。
3.4 指令輸入技巧打錯了指令,怎樣修改呢?怎樣才能更高效地輸入指令?這些都是本節将探讨的問題。 在 DOS 作業系統中,打錯指令有兩種情況: 1. 打錯指令,若未回車可用倒退鍵或左方向鍵(←)抹去錯誤後重打,然後回車執行。 2. 打錯了指令,已經回車,可用功能鍵修改。 常用 DOS 功能鍵有:
實際上,我們更多時候會在 Windows 下修改,“指令行解釋器”給我們提供了更友善的修改方法。首先,在未回車時輸左方向鍵(←)并不會像 DOS 中那樣删除前一個字元,隻會移動光标,故隻需把光标移到有錯誤的地方修改即可。并且,Windows 中可使用上方向鍵(↑)來周遊已經輸過的指令。更為重要的是,“指令行解釋器”提供了強大的複制/粘貼功能!姑舉一例說明: 假如上一個指令是“dir transitional.txt”,現在要輸入“type transitional.txt”,有兩種方法: 1. 先按上方向鍵(↑)(或<F3>),螢幕顯示:dir transitional.txt 。再按<Home>鍵,将光标移動到行首,按三次<Del>鍵,再輸入 type ,即完成指令。 2. 在視窗中點右鍵,選擇“标記”,再用滑鼠拉框選中上一個指令中的“transitional.txt”,按回車,就将文本“transitional.txt”複制到了剪貼闆。然後輸入“type”,空格,再點右鍵,選擇“粘貼”,即完成指令。 要提高輸入效率還得靠另一個功能鍵:<Tab> ,它能自動補完檔案名。例如,假設目前目錄中以字母 t 開頭的隻有 transitional.txt 和 trap.exe ,但你嫌 transitional.txt 這個名字太長,于是你輸入“type”空格後,輸入“t”,然後按<Tab> ,指令行解釋器會自動補完後面的部分,變成“type transitional.txt”,如果再按<Tab>,就會在 transitional.txt 和 trap.exe 這兩個檔案名之間切換。 4. 一些較進階的概念上一章介紹了 Windows 指令行的基礎知識,本章将讨論一些更進階的功能,這些功能足以使 Windows 指令行成為一個非常靈活而且強大的工具。4.1 輸入輸出重定向和管道每個指令都需要一個輸入源和一個輸出目的地。預設輸入是鍵盤,預設輸出是螢幕,這稱為标準輸入和标準輸出。但在很多情況中,使用者也許希望為單獨 某次操作修改輸入和輸出。例如,寫一個指令,從一個檔案提取資料,進行加工後,輸出到另一檔案。這稱為重定向(redirection)。 指令行解釋器使用字元“<”和“>”來定義臨時輸入和輸出源。假定使用者希望使用 dir 指令列出某個目錄的内容,并将輸出儲存到文本檔案中而并非列印到螢幕上,那麼他可以建立一個 dir.txt ,然後執行: 這裡,以上指令不會産生輸出,但會修改 dir.txt 的内容。注意字元“>”會完全覆寫 dir.txt 中已有的資料,而且 dir.txt 不存在時還會自動建立檔案。如果希望儲存先前資料,則可以使用 >> 操作符: 字元 < 用于修改輸入,所謂輸入,是指某些指令從鍵盤讀取的輸入。這種指令在 Windows 不太常見,就舉 sort 為例。sort 指令要求使用者輸入一系列單詞,每個單詞占一行,以 Ctrl+Z 結束輸入,然後将這些單詞按字母表順序排序并輸出到螢幕上。 如果我們使用輸入輸出重定向呢?我們先建立一個 names.txt ,内容如下: 然後執行: 該指令将輸入和輸出重定向結合在一起使用:将 names.txt 檔案中的條目排序,然後将排序後的輸出寫入一個名為 names-alpha.txt 的檔案中。得到的 names-alpha.txt 如下: 管道(pipe)是一個操作符,它把輸入和輸出重定向結合在一起,進而将一個指令的輸出立即作為另一個指令的輸入。管道用豎直線字元(|)表示,該字元通常位于 Enter 鍵附近。 最經典的使用管道的指令:more 。可以說該指令大部分情況下都和管道一起使用。例如,要檢視 sort 指令的幫助資訊,輸入 sort /? ,但一屏顯示不完,使用 sort /? | more 來分屏顯示。 此時,螢幕左下角顯示:-- More -- ,按任意鍵則顯示下一屏,直到全部顯示完。 另一個經典的使用管道的指令是 find ,用來過濾輸出。例如,我要檢視目前的環境變量,但我隻對 PATH 感興趣,則輸入: 4.2 特殊裝置在 Windows 中可以使用如下裝置名:
可将指令的參數指定為這些裝置名,就能實作很多奇妙功能。 1. 使用 con 2. 使用 nul “粉碎”檔案 檔案被删除之後(指在資源回收筒中被删除),還可以用某些軟體恢複。怎樣才能将檔案徹底删除呢?這裡提供一種簡單易行的方法。 使用“copy nul 檔案名”的辦法,将檔案大小改為 0 後再删除,這樣即使用軟體恢複也隻能恢複出來一個空檔案而已,無法得到原來的那個檔案了。 3. 使用 prn 或 lpt 列印文檔 你是否遇到這種情況:甲電腦上的檔案,要拿到乙電腦上去列印,無奈乙電腦上沒安裝相應軟體,或無相應字型,無法列印,或效果差。這時可以通過 prn 檔案來列印。即在甲電腦的“列印”對話框中選中“列印到檔案”,這樣會生成一 *.prn 檔案,将此檔案拷貝到乙電腦中,輸入: 這樣列印的效果和甲電腦中一模一樣。但需注意,甲電腦中選擇的列印機最好和實際列印的列印機型号相同,否則可能無法正确列印。若甲電腦中未安裝 列印機,可選擇“添加列印機”,手動添加一台列印機,并在“端口”選擇“FILE:(列印到檔案)”,然後選擇和實際列印機相同的驅動程式。 另一種用法是 dir > prn 直接将輸出發送到列印機,不過不常用。 4. 使用 mode 指令 mode 指令可檢視目前可用的裝置或修改裝置參數,一個典型的應用是修改 con 的“代碼頁”(codepage)參數。詳細請參考 mode 指令的幫助頁。 4.3 環境變量環境變量是一個“變量名=變量值”的對應關系,每一個變量都有一個值與之對應。set 指令用于設定或檢視環境變量。我們可以通過兩個百分号的形式:“%變量名%”,在指令中引用變量的值。 變量給指令或批處理檔案帶來了極大的靈活性,多用于批處理檔案中。 |