Bat腳本之在文件中查找多個(gè)字符串并保存到文件中
概述
本文講述的是對(duì)文本的內(nèi)容進(jìn)行檢索,找到需要匹配的字符串并挑出對(duì)應(yīng)字符串輸出到新的文本中,實(shí)現(xiàn)文本內(nèi)容過(guò)濾的效果。
背景
本人在開發(fā)的過(guò)程中,經(jīng)常會(huì)打印一些 log 數(shù)據(jù)來(lái)監(jiān)測(cè)系統(tǒng)是否運(yùn)行正常,但是有時(shí)候 log 數(shù)據(jù)特別大,且有時(shí)候會(huì)有一些 log 和當(dāng)前問(wèn)題不相關(guān),需要過(guò)濾掉,所以想寫一個(gè)可以提取出我所需要信息的腳本來(lái)完成log 數(shù)據(jù)的提取。
需求
1、可以提取多個(gè)字符串內(nèi)容;
2、可以輸出到另外的文本中,不對(duì)原文件進(jìn)行修改;
需求分析
根據(jù)這個(gè)需求,可以有多個(gè)方法實(shí)現(xiàn),其實(shí)簡(jiǎn)單的就是對(duì)文本的內(nèi)容進(jìn)行查找,當(dāng)文件小的時(shí)候,其實(shí)是可以使用 Notepad++ 這樣的軟件進(jìn)行查找,但是 Notepad++ 是有大文件限制的,所以我的想法是通過(guò) bat 腳本的方式進(jìn)行處理。
需求實(shí)現(xiàn)
@echo off rem 需要查找的第1個(gè)字符串 set str1="" rem 需要查找的第2個(gè)字符串 set str2="" rem 需要查找的第3個(gè)字符串 set str3="" rem 需要查找的文件 set filename="" rem 在當(dāng)前腳本處查找1、2、3字符串并在輸出到當(dāng)前路徑生成的 output.txt 文件 findstr /r "%str1% %str2% %str3%" %filename% > output.txt pause
實(shí)現(xiàn)功能
1、可以查找多個(gè)字符串;
2、可以將查找到的字符串輸出到新的文本文件;
缺點(diǎn)
1、查找的字符串不能含有空格;
使用示例
比如我當(dāng)前有一個(gè)文本文件(test.txt)的內(nèi)容如下:
test1
test2
test3
test4
test5
test6
而我需要查找“test1”和“test5”,則可以新建一個(gè) txt 文件,輸入修改后的腳本內(nèi)容為
@echo off rem 需要查找的第1個(gè)字符串 set str1="test1" rem 需要查找的第2個(gè)字符串 set str2="test5" rem 需要查找的文件 set filename="test.txt" rem 在當(dāng)前腳本處查找1、2字符串并在輸出到當(dāng)前路徑生成的 output.txt 文件 findstr /r "%str1% %str2%" %filename% > output.txt pause
然后保存為 find.bat 到 test.txt 文件的路徑下,點(diǎn)擊運(yùn)行出現(xiàn)
關(guān)掉運(yùn)行窗口后,可以看到當(dāng)前路徑下多了一個(gè)output.txt 文件,打開后是只有“test1”和“test5”的內(nèi)容
由此完成文本的過(guò)濾。
總結(jié)
目前實(shí)現(xiàn)的腳本滿足需求,就是每次都要填充內(nèi)容,后面知道新的方法后再看看如果改進(jìn)。
相關(guān)文章
通過(guò)批處理bat設(shè)置系統(tǒng)環(huán)境變量的實(shí)現(xiàn)代碼
這篇文章主要介紹了通過(guò)批處理bat設(shè)置系統(tǒng)環(huán)境變量的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-07-07bat命令批處理判斷32位還是64位系統(tǒng)的多種方法
這篇文章主要介紹了cmd命令批處理判斷32位還是64位系統(tǒng)的多種方法,需要的朋友可以參考下2018-02-02批處理應(yīng)用:使用FLASHGET檢查Mcafee SuperDat更新
批處理應(yīng)用:使用FLASHGET檢查Mcafee SuperDat更新...2007-04-04自動(dòng)清除電腦垃圾及刪除windows默認(rèn)共享盤符的批處理bat
其實(shí)這上面好的代碼我是從網(wǎng)上查資料得來(lái)的,還是那句話,覺得不好,歡迎管理,網(wǎng)友們拍磚。2010-01-01