語法 findstr [/b] [/e] [/l] [/r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/offline] [/g:file] [/f:file] [/c:string] [/d:dirlist] [/a:colorattribute] [strings] [[drive:][path] filename [...]]
引數 /b
如果位於行的開頭則匹配模式。
/e 如果位於行的末尾則匹配模式。
/l 逐字地搜尋字串。
/r 使用搜尋串作為正規表示式。findstr 將所有元字元解釋為正規表示式,除非使用了 /l。
/s 在當前目錄和所有子目錄中搜尋匹配的檔案。
/i 指定搜尋不區分大小寫。
/x 列印完全匹配的行。
/v 僅列印不包含匹配的行。
/n 在每個匹配的行之前列印行號。
/m 如果檔案包含匹配項,則僅列印該檔名。
/o 在每個匹配行之前列印查詢偏移量。
/p 跳過包含非可列印字元的檔案。
/offline
利用離線屬性設定處理檔案。
/f:file
從指定檔案中讀取檔案列表。
/c:string
使用指定的文字作為文字搜尋字串。
/g:file
從指定檔案得到搜尋字串。
/d:dirlist
搜尋以逗號分隔的目錄列表。
/a:colorattribute
使用兩個十六進製制數指定顏色屬性。
strings
指定要在 filename 中搜尋的文字。
[ drive:][path] filename [...]
指定要搜尋的檔案。
/? 在命令提示符下顯示幫助。
注釋 • 使用 strings 和 [drive:][path] filename [...]
在命令字串中,所有 findstr 命令列選項必須在 strings 和 [drive:][path] filename [...] 之前。
• 在 findstr 中使用正規表示式
findstr 可以在任何 ascii 檔案或檔案中精確查詢所要查詢的文字。然而,有時要匹配的資訊只有一部分或要查詢更寬廣的資訊範圍。在這種情況下,findstr 具有使用正規表示式搜尋各種文字的強大功能。
正規表示式是用於指定文字型別的符號,與精確的字串相反。標記使用文字字元和元字元。每個在常規的表示式語法中沒有特殊意義的字元都是文字字元,與出現的該字元匹配。例如,字母和數字是文字元號。元字元是在正規表示式語法中具有特殊意義(操作符或分隔符)的符號。
下表列出 findstr 接受的元字元。
字元 值
. 萬用字元:任何字元
* 重複:以前零次或多次出現的字元或類
^ 行中的位置:行首
$ 行中的位置:行尾
[class]
字元類:集中的任何乙個字元
[^class]
反向類:非集中的任何乙個字元
[x-y]
範圍:指定範圍內的任何字元
\x 轉義:元字元 x 的文字用途
\ 字的位置:字首
xyz\>
字的位置:字尾
組合使用正規表示式語法的特殊字元功能十分強大。例如,下面的萬用字元 (.) 和重複符 (*) 的組合可以匹配任何字串:
將如下表示式用作匹配以「b」開頭並以「ing」結尾的任意字串的更大表示式的組成部分:
b.*ing
示例 使用空格分隔多個搜尋字串,除非引數以 /c 為字首。要在檔案 x.y 中搜尋「hello」或「there」,請鍵入:
findstr "hello there" x.y
要在檔案 x.y 中搜尋「hello there」,請鍵入:
findstr /c:"hello there" x.y
若要查詢檔案 proposal.txt 中出現的所有單詞「windows」(首字母 w 大寫),請鍵入:
findstr windows proposal.txt
若要搜尋包含單詞 windows 的當前目錄和所有子目錄中的每個檔案(不考慮字母大小寫),請鍵入:
findstr /s /i windows *.*
要查詢包含字「for」的所有行(前面可有任意空格,如:電腦程式中的迴圈),幷包括每次出現的行號,請鍵入:
findstr /b /n /c:"*for" *.bas
如 果要在相同組檔案中搜尋幾個不同專案,請在新行上建立包含每個搜尋標準的文字檔案。也可以列出要在文字檔案中搜尋的確切檔案。要使用檔案 finddata.txt 中的搜尋標準來搜尋 filelist.txt 中列出的檔案,然後將結果儲存到檔案 results.out 中,請鍵入:
findstr /g:finddata.txt /f:filelist.txt > results.out
假設您想要查詢當前目錄和所有子目錄中包含單詞「computer」的每個檔案,而不考慮字母的大小寫。若要列出包含單詞「computer」的所有檔案,請鍵入:
findstr /s /i /m "\" *.*
現在假定不僅需要查詢單詞「computer」,而且需要查詢以字母「comp」開頭的所有其他單詞,例如「compliment」和「compete」。請鍵入:
findstr /s /i /m "\
例項:
1.findstr . 2.txt 或 findstr "." 2.txt
從檔案2.txt中查詢任意字元,不包括空字元或空行
====================
2.findstr .* 2.txt 或 findstr ".*" 2.txt
從檔案2.txt中查詢任意字元包括空行和空字元
====================
3.findstr "[0-9]" 2.txt
從檔案2.txt中查詢包括數字0-9的字串或行
====================
4.findstr "[a-za-z]" 2.txt
從檔案2.txt中查詢包括任意字元的字串或行
====================
5.findstr "[abcezy]" 2.txt
從檔案2.txt中查詢包括a b c e z y字母的字串或行
====================
6.findstr "[a-fl-z]" 2.txt
從檔案2.txt中查詢小寫字元a-f l-z的字串,但不包含g h i j k這幾個字母。
====================
7.findstr "m[abc][hig]y" 2.txt
從檔案2.txt中可以匹配 mahy , mbiy, mahy等…..
====================
8. ^和$符號的應用
^ 表示行首,"^step"僅匹配 "step hello world"中的第乙個單詞
$ 表示行尾,"step$"僅匹配 "hello world step"中最後乙個單詞
====================
9.finstr "[^0-9]" 2.txt
如果是純數字的字串或者行便過濾掉,例如2323423423 這樣的字串,如果是345hh888這樣的形式就不成了。
====================
10.findstr "[^a-z]" 2.txt
同上,如果是純字母的字串或者行便過濾掉,例如 sdlfjlkjlksjdklfjlskdf這樣的字元,如果是sdfksjdkf99999這樣的形式,摻雜著數字就不成了
====================
11.*號的作用
前面已經說過了 ".*"表示搜尋的條件是任意字元,*號在正規表示式中的作用不是任何字元,而是表示左側字元或者表示式的重複次數,*號表示重複的次數為零次或者多次。
====================
12.findstr "^[0-9]*$" 2.txt
這個是匹配找到的純數字,例如 234234234234,如果是2133234kkjl234就被過濾掉了。
findstr "^[a-z]*$" 2.txt
這個是匹配找到的純字母,例如 sdfsdfsdfsdf,如果是213sldjfkljsdlk就被過濾掉了
如 果在搜尋條件裡沒有*號,也就是說不重複左側的搜尋條件,也就是[0-9] [a-z]那只能匹配字串的第乙個字元也只有這乙個字元,因為有行首和行尾的限制,"^[0-9]$"第乙個字元如果是數字就匹配,如果不是就過濾掉, 如果字串是 9 就匹配,如果是98或者9j之類的就不可以了。
=====================
13. "\<…\>"這個表示式的作用
這個表示精確查詢乙個字串,\表示字的結束位置
echo hello world computer|findstr "\"這樣的形式
echo hello worldcomputer|findstr "\" 這樣的形式就不成了,他要找的是 "computer"這個字串,所以不可以。
echo hello worldcomputer|findstr ".*computer\>"這樣就可以匹配了
詳細出處參考:
批處理 正規表示式 findstr 整理
findstr 使用正規表示式搜尋檔案中的文字模式。語法findstr b e l r s i x v n m o p offline g file f file c string d dirlist a colorattribute strings drive path filename 引數 b...
批處理 正規表示式 findstr 整理
1.findstr 2.txt 或 findstr 2.txt 從檔案2.txt中查詢任意字元,不包括空字元或空行 2.findstr 2.txt 或 findstr 2.txt 從檔案2.txt中查詢任意字元包括空行和空字元 3.findstr 0 9 2.txt 從檔案2.txt中查詢包括數字0...
FINDSTR正規表示式小結
前言 最近寫了乙個bat用於快速編譯swf至目標目錄,想利用findstr命令通過匹配目標目錄名稱,匹配數量大概600多個,發現匹配耗時比較久,大概花費10餘秒,因此還是放棄字元匹配,乖乖拼出全稱來定位目錄。感覺bat的執行效率是比較低的。稍加搜尋,看到一些帖子也印證了我的想法。bat不適合做太複雜...