探索Windows命令行系列(2):命令行工具入門

来源:http://www.cnblogs.com/hanzongze/archive/2017/06/27/cmd-tool-base.html
-Advertisement-
Play Games

" 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 然後回車,示例如圖:cmd01.png

常見的簡單命令說明列表如下:

序號 命令 功能
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 支持的命令了,但視窗大小有限,那麼多命令不方便查看,而且視窗一關就看不到了;還有就是有些命令的說明內容非常多,也不方便在視窗中具體查看。這些時候就我們可以把這些命令或說明保存到指定的文本文件中以便查看,示例:cmd02.png

其實 > 是個非常危險的命令,因為它會覆蓋同名文件,而且不會有任何提示,即便你及時發現,按 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
版權聲明:本文為博客園博主 韓宗澤 原創,作者保留署名權!歡迎通過轉載、演繹或其它傳播方式來使用本文,但必須在明顯位置給出作者署名和本文鏈接!個人博客,能力有限,若有不當之處,敬請批評指正,謝謝!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 數據類型:數據類型時指列,存儲過程參數、表達式和局部變數的數據特征,它決定了數據的儲存格式,代表了不同的信息類型。(比如整數、字元、浮點數、日期、等等等……) 選擇數據類型要選擇最合理、最合適的數據類型,而不是最大的數據類型。 整數的五種類型: (整數就是像-3,-2,-1,0,1,2,3,10等這 ...
  • 一、事務1、提交2、回滾3、ACID特性二、視圖1、創建視圖2、刪除視圖3、更新視圖4、使用視圖三、子查詢1、 使用子查詢2、 標量子查詢3、 關聯子查詢一、事務在 RDBMS 中,事務是對錶中數據進行更新的單位。簡單來講,事務就是需要在同一個處理單元中執行的一系列更新處理的集合。事務開始語句STA... ...
  • Sql Server2005資料庫自帶一個排序函數ROW_NUMBER(),列表為: 語法:row_number() : over(子句)1.使用row_number()函數進行編號: 原理:先按Sage進行排序,排序完後,給每條數據進行編號。註:在使用over等開窗函數時,over裡頭的分組及排序 ...
  • mongodb作為nosql中排名第一的資料庫,近年來使用的人數越來越多,作為開發人員,非常有必要瞭解下mongodb資料庫。下麵就給大家介紹下mongodb資料庫的基本知識,有不對的地方歡迎指正 ...
  • 純粹記錄一下最基礎寫法,幾乎沒有寫什麼邏輯,寫法也並不是很完善(因為我自己也剛剛摸索出來這麼寫可以...= =!) 望高手指教 也希望能夠幫到比我還新的新手.... //1.insert操作 let insertSql = 'insert into User(username,password,na ...
  • 最近因為那個勒索病毒,聽了一位安全方面的專家做的的一個關於安全方面的培訓,從中學習到了許多新的知識。在如今網路如此發達的社會,我們的信息,我們的隱私,是如此簡單的就可以被泄漏出來,所以關註安全是很有必要的。 在報告的時候提到了kali linux,這個對想學習安全攻防的同學來說是一個很好的實踐工具。 ...
  • 一、版本信息 mac 10.10.5 php 5.5.38 phpstorm 10.0.3 xdebug 版本需要與php匹配,匹配地址 :點我匹配 點我查看所有版本 提示:不確定xdebug版本的,把phpinfo()顯示的全部複製(command+a 全選再command+c複製)到文本框中,x ...
  • 下麵介紹一下自己寫的python程式,主要是的知識點為sys、os、json、pickle的模塊應用,python程式包的的使用,以及關於類的使用。 下麵是我的程式目錄: bin是存放一些執行文件course.py下麵是這個文件的內容: 這個文件是對os,sys模塊的應用; BASE_DIR = o ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...