" 1、理論基礎 " "1.1、命令行的前世今生" "1.2、命令執行規則" "1.3、使用命令歷史" " 2、使用入門 " "2.1、啟動和關閉命令行" "2.2、執行簡單的命令" "2.3、命令行執行程式使用技巧" " 3、總結 " 1、理論基礎 1.1、命令行的前世今生 談到 Windows ...
1、理論基礎
1.1、命令行的前世今生
談到 Windows 命令行就不得不說說 MS-DOS(DOS 的一種),MS-DOS 是微軟公司的早期產品。後來微軟推出了 Windows 操作系統,但早期的 Windows 中依然保留著 MS-DOS。從 Windows XP 開始,MS-DOS 被微軟從 Windows 中移除,取而代之的是 Windows command line(Windows 命令行)。Windows 命令行延續了 MS-DOS 中的某些功能,相當於是簡化版的 MS-DOS。
從 Windows XP 到最新的 Windows 10,每個版本的 Windows 都內置了命令行,用於運行 Windows 命令、腳本及工具。每一個新版本的 Windows 都會對命令行做一些擴展和增強,這種持續性更新使得 Windows 命令行能與時俱進。
我們通常所說的 Windows 命令行一般是指 Windows 系統自帶的後臺程式 cmd.exe,Windows 命令行本質上就是一種命令提示符工具。可以在 %SystemRoot%\System32 路徑下找到 cmd.exe,而 64 位的操作系統中還可以在 %SystemRoot%\SysWOW64 路徑下找到 64 位的 cmd.exe。
其它必要補充:
DOS(Disk Operating System)即磁碟操作系統,是一種命令行形式的單用戶單任務操作系統。常見的有 MS-DOS、PC-DOS、Free-DOS 等,其中最富盛名的是 MS-DOS,它曾是個人電腦操作系統的霸主,後來逐漸被 Windows、macOS 等圖形用戶界面操作系統取代。
Windows PowerShell(powershell.exe)是一個功能完備的命令 shell,它包含了一些內置的命令(cmdlets)、內置的程式設計功能以及標準的命令行工具。PowerShell 從 Windows 7 開始被集成到 Windows 中,可以認為 PowerShell 是 cmd 的超集,因為 cmd 能完成的任務,PowerShell 一般也能完成,且二者的命令規則基本一致,但 PowerShell 還能額外完成許多 cmd 不能完成的任務。
Windows 批處理(Batch)就是對某一類對象進行批量處理,通常被認為是一種簡化的腳本語言,Windows 批處理是指應用於 MS-DOS 和 Windows 中的批處理腳本。存放 Windows 批處理腳本的文本文件被稱之為批處理文件,作用就是方便自動的連續執行多條命令,批處理文件的擴展名一般是.bat
或.cmd
。
1.2、命令執行規則
按存儲方式可將命令行的命令分為內部命令和外部命令兩種。內部命令是在系統啟動後自動裝入記憶體並常駐記憶體的可執行命令。外部命令是以可執行文件的形式存放在磁碟上,平時不占用記憶體,當輸入對應命令之後,命令行會根據命令所指定的路徑(未指定路徑時會在當前目錄和環境變數指定的目錄中尋找可執行文件)在磁碟上找到該命令文件,並把該文件調入記憶體執行,執行結束後立即把所占記憶體釋放。
可以在命令行中運行很多類型的命令,包括系統內置的命令、Windows 工具以及帶有命令行擴展的應用程式。每一個運行的命令都遵循同樣的語法規則,而不論其出處。這些規則要求命令行中運行的每一個命令都由命令名開始,其後跟隨著必需的或可選的參數。在參數中還可以使用重定向方法執行輸入源、輸出目標以及錯誤日誌。
基本的語法規則:
- Windows 命令不區分大小寫。
- 外部命令如果不在當前驅動器的當前目錄中,需要給出盤符和路徑。內部命令不需要。
- 輸入盤符時,冒號不能省略。
- 命令與參數之間必須有空格,而盤符與後面緊跟的參數之間不能有空格。
- 鍵入一個 Windows 命令後,必須按回車鍵才能執行。
在命令行中執行命令時,會涉及如下一些活動:
- 1、命令行使用實際值(實參)來替換用戶在命令文本中輸入的變數(形參)。
- 2、在單一命令行中結成命令鏈(或分組)並傳遞的多條命令被分解為單獨的命令,每條命令帶有自己的命令名與參數,並按序分別進行處理。
- 3、如果命令名帶有文件路徑,則命令行將使用這一路徑找到該命令,如果在指定位置找不到該命令,則命令行將返回錯誤信息。
- 4、如果命令名沒有指定文件路徑,則命令行會嘗試對該命令進行內部解析。如果可以找到匹配項,則說明該命令是一條內置命令,會被立即執行。如果找不到匹配項,則命令行會在當前目錄下查找該命令的可執行文件,之後搜索該可執行文件的命令路徑。如果這些位置都無法找到該命令,則命令行會返回錯誤信息。
- 5、如果命令定位成功,則該命令會使用指定的參數運行,包括那些要求輸入的參數。命令輸出與錯誤信息將會回顯到命令視窗,或者寫入到存儲輸出信息與錯誤日誌的位置。
從上面可以看出,很多因素都可能會影響命令的執行過程,包括命令路徑設置、使用的重定向技術,以及多條命令是否構成一個命令鏈或分組等。
1.3、使用命令歷史
命令歷史緩存是 Windows 命令行的一項功能,用於記錄當前命令行會話中使用過的命令,允許在不重新鍵入命令的情況下再次使用。可以設置緩存命令數的最大值,預設為 50。
- 1、使用箭頭瀏覽(適用 cmd.exe 和 powershell.exe)。使用向上、向下箭頭,在緩存命令列表中上下移動,命令行就會依次顯示之前輸入過的命令。
- 2、在命令歷史彈出視窗中瀏覽(僅適用 powershell.exe)。按 F7 會顯示一個彈出視窗,其中包含了緩存命令的列表,然後通過上下箭頭來選擇命令。(或者按 F9 並輸入命令對應的數字來選擇命令)。按 Esc 退出彈出視窗。
- 3、搜索命令歷史(僅適用 powershell.exe)。輸入某條想要執行的命令中的少數幾個字元,然後按 F8,之後命令提示符會在命令歷史中搜索第一條已鍵入的字元引導的命令,過不是想要的命令,還可以再按 F8,繼續搜索命令歷史中下一條匹配的命令。
2、使用入門
2.1、啟動和關閉命令行
啟動命令行的方法很簡單,只需要在開始或運行的輸入框中鍵入 cmd 或 powershell 然後回車,即可啟動命令行執行程式。如果需要以管理員的身份啟動命令行,那鍵入 cmd 或 powershell 之後不要回車,在程式下麵的 cmd.exe 或 powershell.exe 上右鍵,然後選擇以管理員身份運行即可。
命令行工具一般都有命令提示符,Windows 命令行工具的命令提示符展示了當前的工作目錄,預設為 %UserProfile%,即當前用戶的文件目錄。(%UserProfile% 是一個環境變數,Windows 中有許多類似的變數,如 %SystemRoot% 代表當前系統目錄、%Path% 代表執行路徑)
有時候已經打開一個命令行視窗了,但需要再單獨啟動一個視窗,以便運行其它指定的程式或命令,可以在當前視窗中通過start cmd
來實現。實際上 start 命令可以在新視窗中調用任何命令或程式,如start calc
表示新啟動一個計算器,start explorer d:\
表示調用圖形界面打開 D 盤。
要退出或關閉 cmd 或 powershell 視窗,直接點視窗右上角的關閉按鈕當然是可以的。也可以在 cmd 或 powershell 中鍵入 exit 命令並回車來退出。該命令大多用於批處理腳本中。
2.2、執行簡單的命令
在命令行程式視窗中執行 Windows 命令是比較簡單的,正確鍵入命令然後回車,命令即可被執行併在視窗中回顯執行結果。譬如要查一下當前系統的電腦名,可鍵入 hostname 然後回車,示例如圖:
常見的簡單命令說明列表如下:
序號 | 命令 | 功能 |
---|---|---|
1 | hostname | 列印當前主機的名稱 |
2 | vel | 顯示 Windows 版本 |
3 | vol | 顯示磁碟捲標和序列號 |
4 | title [string] | 指定命令提示視窗的標題 |
5 | color [attr] | 指定控制台輸出的顏色屬性 |
6 | start [command/program] | 打開單獨視窗運行指定命令或程式 |
7 | cls | 清空控制台視窗,重置屏幕緩衝 |
8 | pause | 暫停批處理程式,並顯示“請按任意鍵繼續. . .” |
9 | help | 查詢所有命令(僅適用於 cmd.exe) |
10 | help *-* | 查詢所有命令(僅適用於 powershell.exe) |
11 | >、>> | 重定向符 |
設置控制台輸出的顏色
用color
命令,該命令用於設置命令行視窗的文本顏色和背景顏色。如color 07
表示將背景顏色設置為黑色(0)、將文本顏色設置為白色(7),預設即為 07。命令行視窗的顏色代碼對照表如下:
代碼 | 顏色 | 代碼 | 顏色 | 代碼 | 顏色 | 代碼 | 顏色 |
---|---|---|---|---|---|---|---|
0 | 黑色 | 4 | 紅色 | 8 | 灰色 | C | 淺紅色 |
1 | 藍色 | 5 | 紫色 | 9 | 淡藍色 | D | 淡紫色 |
2 | 綠色 | 6 | 黃色 | A | 淡綠色 | E | 淡黃色 |
3 | 淺綠色 | 7 | 白色 | B | 淺水綠色 | F | 亮白色 |
將控制台回顯內容寫入到指定文件
有時候我們需要把一些命令的執行結果或控制台的回顯內容保存下來,這時候就需要用到重定向符了。譬如當我們在 cmd 視窗中鍵入 help 之後回車就能查看到所有 cmd 支持的命令了,但視窗大小有限,那麼多命令不方便查看,而且視窗一關就看不到了;還有就是有些命令的說明內容非常多,也不方便在視窗中具體查看。這些時候就我們可以把這些命令或說明保存到指定的文本文件中以便查看,示例:
其實 > 是個非常危險的命令,因為它會覆蓋同名文件,而且不會有任何提示,即便你及時發現,按 Ctrl+Z 也恢復不了(事實上我發現命令行的所有操作都是無法回退的)。筆者就曾不小心把自己辛辛苦苦整理多天的資料給覆蓋掉了,嘗試了好幾個辦法都沒能恢復。當你在用該命令時一定要小心謹慎,以防誤操作,或者使用 >> 命令,該命令的作用是附加文本到文件末尾而不刪除文件中的內容。
2.3、命令行執行程式使用技巧
沒怎麼用過(Windows 10 以下版本的)命令行的朋友可能會覺得很彆扭、不習慣,我當初也是這種感覺。典型問題有:無法通過快捷鍵拷貝和粘貼,無法通過滑鼠拖選等。
其實諸如拷貝、粘貼和托選等基本操作,也能在命令行中實現,只不過沒有在 Windows 中操作那麼流暢罷了。下麵我就來逐一說明這幾個動作該如何操作:
拷貝:在視窗內的任意位置【右鍵】,然後選擇【標記】,接下來按住【左鍵】在想要拷貝的文本上【拖選】,最後一步最為關鍵,同第一步(即在視窗內的任意位置右鍵),這時候剛剛拖選的文本就已經被拷貝到系統剪切板了,直接到記事本或 Word 等編輯器中按 CTRL+V 即可粘貼剛纔拷貝的文本。
粘貼:當你在編輯器里拷貝了寫好的命令,再到命令行視窗中直接按 CTRL+V 是粘貼不了的。正確的方法是在視窗內的任意位置【右鍵】,然後選擇【粘貼】即可。
拖選:內的任意位置【右鍵】,然後選擇【標記】,接下來就可以拖選了,支持跨行拖選和區塊拖選。
命令行執行程式還支持一些快捷鍵,掌握這些快捷鍵,能有效提升編輯速度。主要快捷鍵一覽表:
序號 | 命令 | 功能 |
---|---|---|
1 | Delete | 刪除游標處的字元,游標不移動 |
2 | Esc | 刪除當前行 |
3 | Ctrl+S | 暫停顯示(暫停屏幕輸出以便閱讀,按任意鍵繼續) |
4 | Ctrl+C | 終止執行(終止當前一個命令或一個程式的執行) |
5 | Backspace/Ctrl+H | 退格並刪除一個字元 |
6 | F7 | 打開歷史命令列表 |
3、總結
在 Windows 中,命令行可以完成很多系統操作和任務,譬如管理 Windows 的事件、監控、性能、作業、磁碟、用戶、域、列印、網路、磁碟管理、伺服器集群等等,尤其是 powershell 甚至可以調用 .NET API,可謂是強大到令人驚艷。
另外,本系列博文不會講解上文列舉的任何內容,因為開發人員一般無需具體瞭解這些。除此之外也不會全面講解命令行的各個體系、開關、設置等,但會挑一些本人覺得比較實用的命令和使用技巧具體講述,如文件管理、服務管理等。
本文鏈接:http://www.cnblogs.com/hanzongze/p/cmd-tool-base.html
版權聲明:本文為博客園博主 韓宗澤 原創,作者保留署名權!歡迎通過轉載、演繹或其它傳播方式來使用本文,但必須在明顯位置給出作者署名和本文鏈接!個人博客,能力有限,若有不當之處,敬請批評指正,謝謝!