Findstr 命令

和Linux相比,對於命令行操做,Windows老是以爲有點力不從心。好比,有的時候咱們想查找某些進程佔用了哪些網絡端口,有一些指定的網絡端口又被哪些應用給佔用,老是稍顯有點麻煩,每每須要從一大串數據行中去目測,找出本身關心的一些信息。若是咱們要從一大段數據行中,或者一大段文本中去找出咱們所關心的一些數據行,Linux下grep能夠很輕鬆地搞定這個任務,但在windows下恐怕就沒有那麼容易了。固然,你須要查找的數據在一個文本文檔中,在Windows下用一些編輯器找出來仍是很方便的,但若是咱們的操做都是在命令行下面進行,估計你們就只能靠本身一行一行手動去尋找了。html

 

還好,Windows下面還有一個findstr命令,有了這個命令,你們會發現,原來在Windows下面,文本內容的查找原來也是很方便的一件事情。下面咱們先來看一看findstr命令的使用方法。java

  1. 在文件中尋找字符串。  
  2.   
  3. FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]  
  4.         [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]  
  5.         strings [[drive:][path]filename[ ...]]  
  6.   
  7.   /B         在一行的開始配對模式。  
  8.   /E         在一行的結尾配對模式。  
  9.   /L         按字使用搜索字符串。  
  10.   /R         將搜索字符串做爲通常表達式使用。  
  11.   /S         在當前目錄和全部子目錄中搜索匹配文件。  
  12.   /I         指定搜索不分大小寫。  
  13.   /X         打印徹底匹配的行。  
  14.   /V         只打印不包含匹配的行。  
  15.   /N         在匹配的每行前打印行數。  
  16.   /M         若是文件含有匹配項,只打印其文件名。  
  17.   /O         在每一個匹配行前打印字符偏移量。  
  18.   /P         忽略有不可打印字符的文件。    
  19.   /OFF[LINE] 不跳過帶有脫機屬性集的文件。  
  20.   /A:attr    指定有十六進位數字的顏色屬性。請見 "color /?"  
  21.   /F:file    從指定文件讀文件列表 (/ 表明控制檯)。  
  22.   /C:string  使用指定字符串做爲文字搜索字符串。  
  23.   /G:file    從指定的文件得到搜索字符串。 (/ 表明控制檯)。  
  24.   /D:dir     查找以分號爲分隔符的目錄列表  
  25.   strings    要查找的文字。  
  26.   [drive:][path]filename  
  27.              指定要查找的文件。  
  28.   
  29. 除非參數有 /C 前綴,請使用空格隔開搜索字符串。  
  30. 例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或  
  31. "there"。'FINDSTR /C:"hello there" x.y' 文件 x.y  尋找  
  32. "hello there"。  
  33.   
  34. 通常表達式的快速參考:  
  35.   .        通配符: 任何字符  
  36.   *        重複: 之前字符或類出現零或零以上次數  
  37.   ^        行位置: 行的開始  
  38.   $        行位置: 行的終點  
  39.   [class]  字符類: 任何在字符集中的字符  
  40.   [^class] 補字符類: 任何不在字符集中的字符  
  41.   [x-y]    範圍: 在指定範圍內的任何字符  
  42.   /x       Escape: 元字符 x 的文字用法  
  43.   /<xyz    字位置: 字的開始  
  44.   xyz/>    字位置: 字的結束  

web

 

結合其餘的命令,咱們能夠很輕鬆的完成咱們常常要作的一些任務。windows

  1. 查找指定應用佔用的網絡端口號
    有的時候,咱們常常有這種需求,當咱們部署好一個服務以後,但有的時候去查配置又比較麻煩,或者這些端口配置數據是來源於動態配置,這個時候,使用下面的方法,咱們能夠很方便地找出應用程序佔用了哪些端口。
    1. //找出tomcat對應的進程ID, 在個人機器上,我是使用控制檯的方式啓動tomact的,因此它的進程名應該爲java  
    2. tasklist | findstr java  
    3.   
    4. //在我機器上的輸出效果以下:  
    5. java.exe     2224     Console     1     130,540 K  
    6.   
    7. //找出tomcat監聽的全部端口信息  
    8. netstat -nao | findstr 2224  
    9.   
    10. //在我機器上的輸出效果以下:  
    11. TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       2224  
    12. TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING       2224  
    13. TCP    0.0.0.0:8009           0.0.0.0:0              LISTENING       2224  
    14. TCP    127.0.0.1:8005         0.0.0.0:0              LISTENING       2224  
  2. 查找某些指定的端口號被哪些進程給佔用
    因爲某些指定的服務必須在某些指定的端口給啓動,好比,我想在8086(圖個吉利)端口啓動個人webserver,可是很不巧,已經有一些進程把這個端口給佔用了,這個時候我就沒法再在8086端口啓動個人webserver了,這個時候咱們恐怕得花挺長的時間來找到這個進程(若是進程數不少的話),而後把它給結束掉,再啓動咱們的webserver,可是有了findstr以後,你會發現,找出這樣的進程並把它殺死,原來是很垂手可得的事情。
    1. //查找出佔用8086端口進程的ID  
    2. netstat -nao | findstr 8086  
    3.   
    4. //本機輸出效果爲:  
    5.   TCP    0.0.0.0:8086           0.0.0.0:0              LISTENING       804  
    6. //很顯然,進程ID是804  
    7.   
    8. //找出ID爲804的進程名  
    9. tasklist | find 804  
    10.   
    11. //本機輸出效果爲:  
    12. emule.exe                      804 Console                    1     82,068 K  
    13.   
    14. //哈哈,原來 是emule佔用了個人8086端口。  
相關文章
相關標籤/搜索