搜尋檔案中的文字模式。
Syntax
findstr [/b] [/e] [/l | /r] [/s] [/i] [/x] [/v] [/n] [/m] [/o] [/p] [/f:<file>] [/c:<string>] [/g:<file>] [/d:<dirlist>] [/a:<colorattribute>] [/off[line]] <strings> [<drive>:][<path>]<filename>[ ...]
Parameters
| Parameter | Description |
|---|---|
| /b | 如果文字模式位於行的開頭,則比對文字模式。 |
| /e | 如果文字模式位於行尾,則比對文字模式。 |
| /l | 以字面方式處理搜尋字串。 |
| /r | 將搜尋字串當作正則表達式來處理。 這是預設設定。 |
| /s | 搜尋目前目錄和所有子目錄。 |
| /i | 在搜尋字串時忽略字元大小寫。 |
| /x | 列印完全相符的行。 |
| /v | 只列印不包含相符的行。 |
| /n | 列印符合之每一行的行號。 |
| /m | 如果檔案包含相符專案,則只會列印檔名。 |
| /o | 在每一行相符之前列印字元位移。 |
| /p | 略過具有不可列印字元的檔案。 |
| /off[line] | 不會略過已設定離線屬性的檔案。 |
/f:<file> |
從指定的檔案取得檔案清單。 |
/c:<string> |
使用指定的文字做為常值搜尋字串。 |
/g:<file> |
從指定的檔案取得搜尋字串。 |
/d:<dirlist> |
搜尋指定的目錄清單。 每個目錄都必須以分號分隔(;),例如 dir1;dir2;dir3。 |
/a:<colorattribute> |
指定具有兩個十六進位數位的色彩屬性。 輸入 color /? 以取得其他資訊。 |
<strings> |
指定要在 檔案名稱中搜尋的文字。 Required. |
[\<drive>:][<path>]<filename>[...] |
指定要搜尋的位置和檔案或檔案。 至少需要一個檔名。 |
| /? | 在命令提示字元中顯示說明。 |
Remarks
所有 findstr 命令列選項都必須位於命令字串中的 字串 和 檔案名稱 之前。
正則表達式同時使用常值字元和中繼字元來尋找文字模式,而不是確切的字元字串。
常值字元是正則表達式語法中沒有特殊意義的字元;相反地,它會比對該字元的出現次數。 例如,字母和數位是常值字元。
元字元是正則表達式語法中具有特殊意義的符號(運算符或分隔符)。
接受的元字元如下:
Meta-character Value .萬用字元 - 任何字元 *重複 - 零次或多次出現前一個字元或類別。 ^開始行位置 - 行的開頭。 $結束行位置 - 行尾。 [class]字元類別 - 集合中的任何一個字元。 [^class]反向類別 - 不在集合中的任何一個字元。 [x-y]範圍 - 指定範圍內的任何字元。 \xEscape - 元字元的字面使用。 \<string開始字位置 - 字組的開頭。 string\>結束字位置 - 字尾。 正則表達式語法中的特殊字元在一起使用時最強大。 例如,使用通配符 (
.) 和重複 (*) 字元的組合,以符合任何字元字串:.*使用下列運算式作為較大運算式的一部分,以比對任何以 b 開頭、 以 ing 結尾的字串:
b.*ing
若要在一組檔案中搜尋多個字串,您必須建立文本檔,其中包含個別行上的每個搜尋準則。
使用空格來分隔多個搜尋字串,除非引數以 /c 為前置詞。
Examples
若要在檔案 x.y 中搜尋 hello 或 there,請輸入:
findstr hello there x.y
若要在檔案 x.y 中搜尋 hello,請輸入:
findstr /c:"hello there" x.y
若要在檔案 proposal.txt中尋找所有出現的 Windows 一詞 (首字母為大寫字母 W),請輸入:
findstr Windows proposal.txt
若要搜尋目前目錄中的每個檔案,以及包含 Windows 一詞的所有子目錄,無論字母大小寫為何,請輸入:
findstr /s /i Windows *.*
若要尋找以 FOR 開頭且前面有零個或多個空格的行出現項目 (如在電腦程式迴圈中) ,並顯示找到每一個出現項目的行號,請鍵入:
findstr /b /n /r /c:^ *FOR *.bas
若要列出您要在文字檔中搜尋的確切檔案,請使用檔案 stringlist.txt中的搜尋準則,搜尋 filelist.txt中列出的檔案,然後將結果儲存在檔案 results.out,請輸入:
findstr /g:stringlist.txt /f:filelist.txt > results.out
若要列出目前目錄內包含 computer 一詞的每個檔案,以及所有子目錄,無論大小寫為何,請輸入:
findstr /s /i /m \<computer\> *.*
若要列出每一個檔案,其中包含計算機一詞,以及以comps 開頭的任何其他單字,(例如讚美和競爭),請輸入:
findstr /s /i /m \<comp.* *.*