和Linux相比,對於命令行操做,Windows老是以爲有點力不從心。好比,有的時候咱們想查找某些進程佔用了哪些網絡端口,有一些指定的網絡端口又被哪些應用給佔用,老是稍顯有點麻煩,每每須要從一大串數據行中去目測,找出本身關心的一些信息。若是咱們要從一大段數據行中,或者一大段文本中去找出咱們所關心的一些數據行,Linux下grep能夠很輕鬆地搞定這個任務,但在windows下恐怕就沒有那麼容易了。固然,你須要查找的數據在一個文本文檔中,在Windows下用一些編輯器找出來仍是很方便的,但若是咱們的操做都是在命令行下面進行,估計你們就只能靠本身一行一行手動去尋找了。html
還好,Windows下面還有一個findstr命令,有了這個命令,你們會發現,原來在Windows下面,文本內容的查找原來也是很方便的一件事情。下面咱們先來看一看findstr命令的使用方法。java
- 在文件中尋找字符串。
-
- FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
- [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
- strings [[drive:][path]filename[ ...]]
-
- /B 在一行的開始配對模式。
- /E 在一行的結尾配對模式。
- /L 按字使用搜索字符串。
- /R 將搜索字符串做爲通常表達式使用。
- /S 在當前目錄和全部子目錄中搜索匹配文件。
- /I 指定搜索不分大小寫。
- /X 打印徹底匹配的行。
- /V 只打印不包含匹配的行。
- /N 在匹配的每行前打印行數。
- /M 若是文件含有匹配項,只打印其文件名。
- /O 在每一個匹配行前打印字符偏移量。
- /P 忽略有不可打印字符的文件。
- /OFF[LINE] 不跳過帶有脫機屬性集的文件。
- /A:attr 指定有十六進位數字的顏色屬性。請見 "color /?"
- /F:file 從指定文件讀文件列表 (/ 表明控制檯)。
- /C:string 使用指定字符串做爲文字搜索字符串。
- /G:file 從指定的文件得到搜索字符串。 (/ 表明控制檯)。
- /D:dir 查找以分號爲分隔符的目錄列表
- strings 要查找的文字。
- [drive:][path]filename
- 指定要查找的文件。
-
- 除非參數有 /C 前綴,請使用空格隔開搜索字符串。
- 例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或
- "there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 尋找
- "hello there"。
-
- 通常表達式的快速參考:
- . 通配符: 任何字符
- * 重複: 之前字符或類出現零或零以上次數
- ^ 行位置: 行的開始
- $ 行位置: 行的終點
- [class] 字符類: 任何在字符集中的字符
- [^class] 補字符類: 任何不在字符集中的字符
- [x-y] 範圍: 在指定範圍內的任何字符
- /x Escape: 元字符 x 的文字用法
- /<xyz 字位置: 字的開始
- xyz/> 字位置: 字的結束
web
結合其餘的命令,咱們能夠很輕鬆的完成咱們常常要作的一些任務。windows
- 查找指定應用佔用的網絡端口號
有的時候,咱們常常有這種需求,當咱們部署好一個服務以後,但有的時候去查配置又比較麻煩,或者這些端口配置數據是來源於動態配置,這個時候,使用下面的方法,咱們能夠很方便地找出應用程序佔用了哪些端口。
- //找出tomcat對應的進程ID, 在個人機器上,我是使用控制檯的方式啓動tomact的,因此它的進程名應該爲java
- tasklist | findstr java
-
- //在我機器上的輸出效果以下:
- java.exe 2224 Console 1 130,540 K
-
- //找出tomcat監聽的全部端口信息
- netstat -nao | findstr 2224
-
- //在我機器上的輸出效果以下:
- TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 2224
- TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING 2224
- TCP 0.0.0.0:8009 0.0.0.0:0 LISTENING 2224
- TCP 127.0.0.1:8005 0.0.0.0:0 LISTENING 2224
- 查找某些指定的端口號被哪些進程給佔用
因爲某些指定的服務必須在某些指定的端口給啓動,好比,我想在8086(圖個吉利)端口啓動個人webserver,可是很不巧,已經有一些進程把這個端口給佔用了,這個時候我就沒法再在8086端口啓動個人webserver了,這個時候咱們恐怕得花挺長的時間來找到這個進程(若是進程數不少的話),而後把它給結束掉,再啓動咱們的webserver,可是有了findstr以後,你會發現,找出這樣的進程並把它殺死,原來是很垂手可得的事情。
- //查找出佔用8086端口進程的ID
- netstat -nao | findstr 8086
-
- //本機輸出效果爲:
- TCP 0.0.0.0:8086 0.0.0.0:0 LISTENING 804
- //很顯然,進程ID是804
-
- //找出ID爲804的進程名
- tasklist | find 804
-
- //本機輸出效果爲:
- emule.exe 804 Console 1 82,068 K
-
- //哈哈,原來 是emule佔用了個人8086端口。