亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

cmd findstr 字符串查找增強使用說明

2020-07-26 20:21:02
字體:
來源:轉載
供稿:網友
在文件中尋找字符串。
復制代碼 代碼如下:

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/> 字位置: 字的結束

有關 FINDSTR 常見表達法的詳細情況,請見聯機命令參考。
這則幫助信息中,我將“一般表達式”,全部替換成了“正則表達式”(一切都是機器翻譯惹的禍)。

命令概括:
findstr,全英文find string,意為“查找字符串”;

/b,全英文begin,意為“開始”;
/e,全英文end,意為“末端”;
/l,literally,意為“照字面地”;引申為“去正則表達式”。
/r,regular,意為“有規律的”;引申為“正則表達式”。
/s,subdirectory,意為“子目錄”;
/i,ignore,意為“忽略”;引申為“忽略大小寫”;
/x,exactly,意為“恰好地”;引申為“完全匹配”;(一開始意為不是這個單詞,不過HAT確實高明――之所以以e為縮寫,是因為前面有了end的縮寫,所以以第二個字母x為縮寫)。
/v,invert,意為“反轉、使顛倒”(感謝doupip的單詞提供);
/n,全英文number,意為“數字”;引申為“行號”;
/m,merely,意為“只是”;
/o,offset,意為“偏移”;
/p,print,意為“打印”;
/off[line],意為“脫機文件”;
/a,attribute,意為“屬性”;
/f,file,意為“文件”;
/c,case,意為“把幾個字加起來”;引申為“全部字匹配”;
/g,get,意為“獲得”;
/d,directory,意為“目錄”;
class,類。

感謝HAT的單詞提供。

感謝weichengxiehou。

參數詳解部分13-14節都是從weichengxiehou的帖子里復制來的(既然有現成了,省心多少),原帖地址。


參數詳解:
學習findstr需要大量的實踐體會,所以需要新建一些txt文本以供測試。

a.txt的內容(a.txt的內容在后面會多次修改,請注意?。?
復制代碼 代碼如下:

Hello World
Hello Boy
hello ,good man.
goodbye!

1.最簡單的應用:在指定文本中查找指定字符串
代碼:
復制代碼 代碼如下:

findstr "hello" a.txt

結果:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr "hello" a.txt
hello ,good man.

代碼:
復制代碼 代碼如下:

findstr "Hello" a.txt

結果:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr "Hello" a.txt
Hello World
Hello Boy

這里可以看出,
findstr默認是區分大小寫的(跟find命令一樣)――找hello就不會出現Hello,反之亦然。
怎么讓其不區分大小寫呢?
用/i參數!
例如:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /i "Hello" a.txt
Hello World
Hello Boy
hello ,good man.

2.顯示要查找的字符具體在文本哪一行
代碼:C:/Users/helloworld/Desktop>findstr /n /i "hello" a.txt
復制代碼效果:
復制代碼 代碼如下:

1:Hello World
2:Hello Boy
3:hello ,good man.

顯示的結果中冒號(:)是英文格式下的,在用for提取的時候需要注意!
這里可以對比一下find命令的/n參數:
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>find /n "hello" a.txt

效果:---------- A.TXT
[3]hello ,good man.
復制代碼冒號(:)和中括號([]),這就是差別,編寫代碼的時候一定要注意。
3.查找包含了指定字符的文本
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /m /i "hello" *.txt

效果:
復制代碼 代碼如下:

1.txt
a.txt

1.txt中的類容如下:除非參數有 /C 前綴,請使用空格隔開搜索字符串。
例如:
復制代碼 代碼如下:

'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或
"there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 尋找
"hello there"。
[code]
由于加上了/m參數,所以只列出包含指定字符的文件名。
4.查找以指定字符開始或結尾的文本行
這個功能和前面介紹的最大不同就在于涉及到了“元字符”,如果你不明白什么是“元字符”,那也不用擔心學不好這一節,這就好像不明白“water”是什么,也不會影響喝水。
a.txt內容:
[code]
good hello
你好 hello world
Hello World
Hello Boy
hello ,good man.
goodbye!

如何查找以hello(忽略大小寫)開始的行?
兩種方法:
①./b參數
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /b /i "hello" a.txt

效果:
復制代碼 代碼如下:

Hello World
Hello Boy
hello ,good man.

good hello 和 你好 hello world,這兩行都沒有顯示出來,因為hello不在行的開始處。
②.^符
這里的^可不是轉義符,而是正則表達式中的“匹配行開始的位置”。
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /i "^hello" a.txt

效果:
復制代碼 代碼如下:

Hello World
Hello Boy
hello ,good man.

學完了以查找指定字符開始的行,下面學習查找以指定字符結尾的行。
如何查找以hello(忽略大小寫)結尾的行?
同樣有兩種方法:
①./e參數
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /e /i "hello" a.txt

結果:
復制代碼 代碼如下:

good hello

只顯示了“good hello”,因為其它行雖然有“hello”,但是他們都沒有以“hello”結尾。
②.$符
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /i "hello$" a.txt

結果:good hello
到此,我們已經學習了兩個正則表達式的元字符:^和$(分別和他們功能相對應的有/b、/e參數)。
5.查找與指定字符完全匹配的行
首先修改a.txt的內容:
復制代碼 代碼如下:

hello
hello hello
good hello
你好 hello world
Hello World
Hello Boy
hello ,good man.
goodbye!

懂得舉一反三的的童鞋可能會試著嘗試以下代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /n /i "^hello$" a.txt

結果讓你倍感欣喜:1:hello
其實除了這一種方法外,findstr命令還提供了/x參數用來查找完全匹配的行。
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /n /i /x "hello" a.txt

結果:
復制代碼 代碼如下:

1:hello

6.關閉正則表達式會怎么樣?
我們可以人為地將findstr分為兩種模式,“正則表達式模式”和“普通字符串模式”。
findstr默認為“正則表達式模式”,加上/r參數也是“正則表達式模式”(換言之,/r參數有點多余)。
加上/l參數后,findstr轉換為“普通字符串模式”(其實find就是這種模式、且只有這種模式)。
“普通字符串模式”下,以同樣的代碼,看看結果怎樣?
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /li "^hello" a.txt

結果什么都沒顯示出來。
以hello開頭的行明明有以下這些,為什么沒顯示出來呢?
復制代碼 代碼如下:

hello hello
Hello World
Hello Boy
hello ,good man.

因為,當你使用“普通字符串模式”,findstr不會把^當做是正則表達式的元字符,而只是把其當做普通字符^,也就是說它此時已經不具備“表示行首”的功能,變成了和h之類字符一樣的普通民眾,再也沒“特權”。
改變a.txt的內容:^hello
復制代碼 代碼如下:

hello
hello hello
good hello
你好 hello world
Hello World
Hello Boy
hello ,good man.
goodbye!

再次運行代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /nli "^hello" a.txt

結果:
復制代碼 代碼如下:

1:^hello

7.查找不包含指定字符的行
如果比較一下find和findstr命令就會發現,他們都具有/v,/n,/i,/off[line]參數,而且功能都是一摸一樣的,這里說的就是/v參數。
查找不包含hello的行。
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /vni "hello" a.txt

結果:
復制代碼 代碼如下:

9:goodbye!

8.如何查找當前目錄及子目錄下文件內容中包含某字符串的文件名?
在寫這篇教程的時候,偶然看到有批友問了這個問題,問題地址:http://bbs.bathome.net/viewthread.php?tid=14727
代碼:
復制代碼 代碼如下:

findstr /ms "專業" *.txt

效果:
找出當前目錄及子目錄下文件內容中包含“專業”的文本文件,并只顯示其文件名。
9.用文本制定要查找的文件 And 用文本制定要查找的字符串
用文本制定要查找的文件
新建一個file.txt,內容如下(這個文本中指定findstr要查找的文本的路徑):
復制代碼 代碼如下:

C:/Users/helloworld/Desktop/1.txt
C:/Users/helloworld/Desktop/a.txt
C:/Users/helloworld/Desktop/clip.txt
C:/Users/helloworld/Desktop/CrLf 批處理筆記.txt
C:/Users/helloworld/Desktop/file.txt
C:/Users/helloworld/Desktop/MyRarHelp.txt
C:/Users/helloworld/Desktop/test.txt
C:/Users/helloworld/Desktop/紅樓.txt
C:/Users/helloworld/Desktop/520/新建文本文檔.txt
C:/Users/helloworld/Desktop/520/12/hello_ world.txt
C:/Users/helloworld/Desktop/編程/help.txt
C:/Users/helloworld/Desktop/編程/win7 help比xp help多出來的命令.txt
C:/Users/helloworld/Desktop/編程/wmic.txt

代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /f:file.txt /im "hello"

效果:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop/1.txt
C:/Users/helloworld/Desktop/a.txt
C:/Users/helloworld/Desktop/CrLf 批處理筆記.txt
C:/Users/helloworld/Desktop/file.txt
C:/Users/helloworld/Desktop/test.txt

用文本制定要查找的字符串
新建一個string.txt,內容如下(這個文本中指定findstr要查找的字符串):
復制代碼 代碼如下:

^hello
world

a.txt
復制代碼 代碼如下:

^hello
hello
hello hello
good hello
你好 hello
Hello World
Hello Boy
hello ,good man.
goodbye!

代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /ig:string.txt a.txt

效果:
復制代碼 代碼如下:

hello
hello hello
Hello World
Hello Boy
hello ,good man.

被忽略的行
復制代碼 代碼如下:

^hello
good hello
你好 hello
goodbye!

從被忽略的“^hello”可以看出,在不加/l參數的前提下,用/g指定的搜索字符串中如果含有“元字符”,則作為正則表達式使用,而不是作為普通表達式。
10.搜索一個完全匹配的句子
其實findstr自帶的幫助中就有個很好的例子:
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中尋找 "hello" 或
"there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 尋找
"hello there"。
可以以這個例子來做個測試。
復制代碼 代碼如下:

a.txthello there
hellothere
hello
there

代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /ic:"hello there" a.txt

結果:
復制代碼 代碼如下:

hello there

這就是句子的完全匹配了。
11.搜索一個完全匹配的詞。
這里也涉及到了兩個元字符:/<,/>。
先試看一個例子。
a.txt
復制代碼 代碼如下:

far there
farthere
there
far
farm
farmer

代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr "far" a.txt

結果:
復制代碼 代碼如下:

far there
farthere
far
farm
farmer

我的本意是要查找含有“far”這個單詞的行,但是farthere、farm、farmer卻顯示出來了,這不是我想要的結果。
如果只要求顯示含有“far”這個單詞的行,該怎么寫呢?
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr "/<far/>" a.txt

結果:
復制代碼 代碼如下:

far there
far

12.指定要查找的目錄
/d參數我一直把它和/f、/g歸為一類,但其實二者截然不同,/f、/g是用文本文件制定要查找的文件、字符串,而/d是直接書寫目錄名到命令中。
代碼:
復制代碼 代碼如下:

C:/Users/helloworld/Desktop>findstr /imd:520;編程; ".*" "*.txt"

結果:
復制代碼 代碼如下:

520:
hello.txt

編程:
help.txt
復制代碼 代碼如下:

win7 help比xp help多出來的命令.txt
wmic.txt

查找在520、編程目錄中所有包含任意字符的txt文件。
13.統計字符數
/o:在每行前打印字符偏移量,在找到的每行前打印該行首距離文件開頭的位置,也就是多少個字符,如test.txt中有如下內容:
復制代碼 代碼如下:

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

執行命令:findstr /o .* test.txt
復制代碼::上一行中的.*為正則表達式的內容,表示任意行,包含空行
結果如下:
復制代碼 代碼如下:

0:aaaaaaaaaa
12:aaaaaaaaaa
24:aaaaaaaaaa
36:aaaaaaaaaa
48:aaaaaaaaaa

注意每行末尾的回車換行符算兩個字符。
14.以指定顏色顯示文件名
/a:當被搜索文件名中含有通配符*或?時對搜索結果的文件名部分指定顏色屬性,具體顏色值參見color幫助:
0 = 黑色 8 = 灰色
1 = 藍色 9 = 淡藍色
2 = 綠色 A = 淡綠色
3 = 淺綠色 B = 淡淺綠色
4 = 紅色 C = 淡紅色
5 = 紫色 D = 淡紫色
6 = 黃色 E = 淡黃色
7 = 白色 F = 亮白色
常用于彩色顯示,舉個簡單的例子,想要彩色顯示“批處理之家”怎么辦,假如當前的color設置為27(背景綠色,字體白色),用藍色顯示“批處理之家”咋辦?::下一行的退格符可以在cmd的編輯模式下按ctrl+p后按退格鍵獲得>"批處理之家" set /p=<nul
復制代碼 代碼如下:

>"批處理之家" set /p=<nul
findstr /a:21 .* "批處理之家*"
pause

代碼中的退格符是為了讓顯示的內容僅為"批處理之家",如果有其他內容,在彩色顯示的"批處理之家"后還有一個冒號和其他內容,退格符正好將冒號刪除。注意代碼中的通配符是必須的。
15.findstr中的元字符
16.未講解的內容:/p,/off[line]
這兩個命令不明白是什么意思,因為不知道什么是“不可打印字符”、“帶有脫機屬性集的文件”,望有識之士給予解答。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久999精品视频| 97不卡在线视频| 欧美天堂在线观看| 91免费看国产| 日韩综合视频在线观看| 久久久伊人欧美| 久久精品人人爽| 久久露脸国产精品| 尤物精品国产第一福利三区| 国产欧美中文字幕| 国产手机视频精品| 久99久在线视频| 欧美影院成年免费版| 国产自摸综合网| 亚洲色图在线观看| 日韩美女中文字幕| 欧美日韩国内自拍| 亚洲欧美日韩图片| 911国产网站尤物在线观看| 久久精品2019中文字幕| 国产一区二区三区视频| 亚洲欧美日韩直播| 亚洲精品一区二三区不卡| 国产午夜精品全部视频播放| 亚洲第一精品夜夜躁人人躁| 欧美性猛交xxxxx免费看| 亚洲美女精品成人在线视频| 深夜福利一区二区| 亚洲美女在线看| 国产精品久久久久久久久粉嫩av| 欧美精品激情blacked18| 九九热r在线视频精品| 精品成人乱色一区二区| 亚洲激情免费观看| 黄色一区二区在线观看| 2019中文字幕在线免费观看| 成人精品视频99在线观看免费| 欧美一级淫片aaaaaaa视频| 日韩在线观看免费网站| 国产亚洲成精品久久| 久久久天堂国产精品女人| 91色精品视频在线| 亚洲人成毛片在线播放| 精品人伦一区二区三区蜜桃网站| 久久久久久12| 亚洲午夜久久久久久久| 国产精品美女久久久免费| 91九色蝌蚪国产| 国产91精品黑色丝袜高跟鞋| 欧美成人一二三| 色婷婷综合久久久久| 国产偷亚洲偷欧美偷精品| 亚洲激情国产精品| 国产亚洲精品一区二区| 欧美电影免费观看高清| 欧美精品aaa| 久久久久999| 日韩高清av在线| 国产成人精品日本亚洲| 中文字幕日韩在线观看| 国产日韩精品一区二区| 欧美电影在线观看网站| 国产亚洲欧洲在线| 亚洲视频一区二区| 欧美伊久线香蕉线新在线| 久久手机免费视频| 日韩亚洲国产中文字幕| www日韩中文字幕在线看| 欧美性xxxxx极品| 亚洲奶大毛多的老太婆| 国产做受高潮69| 91成人精品网站| 国产性猛交xxxx免费看久久| 日本午夜精品理论片a级appf发布| 日韩视频免费看| 国产精自产拍久久久久久| 国产精品都在这里| 欧美日韩国产丝袜另类| 日韩视频在线一区| 91精品视频大全| 国产精品成人va在线观看| 性色av一区二区三区免费| 日韩国产精品视频| 国产成人亚洲精品| 久久久www成人免费精品| 欧美视频在线看| 欧美一级视频免费在线观看| 国产黑人绿帽在线第一区| 精品中文字幕乱| 亚洲欧美国产一区二区三区| 欧美福利视频在线| 蜜臀久久99精品久久久久久宅男| 亚洲a在线播放| 亚洲人成在线观看网站高清| 亚洲精选中文字幕| 91美女片黄在线观看游戏| 揄拍成人国产精品视频| 国产精品一区二区三区久久| 色婷婷亚洲mv天堂mv在影片| 中日韩美女免费视频网址在线观看| 欧美在线播放视频| 欧美综合在线第二页| 日韩精品欧美激情| 亚洲欧洲国产一区| 国产精品久久久久久久久久新婚| 国产精品久久77777| 91久久精品国产91久久性色| 亚洲天堂av在线免费| 色噜噜国产精品视频一区二区| 中文字幕视频在线免费欧美日韩综合在线看| 伊人一区二区三区久久精品| 亚洲久久久久久久久久| 久久久999国产精品| 亚洲综合小说区| 亚洲国产中文字幕久久网| 欧美电影在线播放| 欧美日韩国产区| 国产精品美女在线观看| 91老司机在线| 国产99视频在线观看| 欧美黑人狂野猛交老妇| 欧美老肥婆性猛交视频| 国产美女久久精品香蕉69| 日本亚洲欧美成人| 91精品国产高清久久久久久| 日韩精品中文字幕在线观看| 91福利视频在线观看| 亚洲jizzjizz日本少妇| 亚洲乱亚洲乱妇无码| 国产日韩欧美在线| 日韩视频免费在线| 久久久精品电影| 97在线免费视频| 亚洲黄页网在线观看| 伊人激情综合网| 国产91色在线播放| 国产精品v片在线观看不卡| 在线观看日韩欧美| 久久综合久久美利坚合众国| 午夜美女久久久久爽久久| 亚洲视频在线播放| 成人午夜激情网| 久久久久久久成人| 韩国19禁主播vip福利视频| 91久久在线播放| 久久伊人精品天天| 久久久久久成人| 欧美精品一本久久男人的天堂| 日韩专区在线播放| 97在线视频免费看| 亚洲激情视频在线观看| 一区二区三区无码高清视频| 亚洲人永久免费| 日韩av在线最新| 国产精品久久久一区| 57pao国产成人免费| 亚洲国产精品999| 精品视频在线观看日韩| 91老司机在线| 久久久久久久一| 精品久久久一区| 国产精品高潮视频| 久久中文精品视频| 国产精品一区二区久久国产|