Bat脚本之在文件中查找多个字符串并保存到文件中
作者:逆风奔跑的攻城狮
这篇文章主要介绍了Bat脚本之在文件中查找多个字符串并保存到文件中,需要的朋友可以参考下
概述
本文讲述的是对文本的内容进行检索,找到需要匹配的字符串并挑出对应字符串输出到新的文本中,实现文本内容过滤的效果。
背景
本人在开发的过程中,经常会打印一些 log 数据来监测系统是否运行正常,但是有时候 log 数据特别大,且有时候会有一些 log 和当前问题不相关,需要过滤掉,所以想写一个可以提取出我所需要信息的脚本来完成log 数据的提取。
需求
1、可以提取多个字符串内容;
2、可以输出到另外的文本中,不对原文件进行修改;
需求分析
根据这个需求,可以有多个方法实现,其实简单的就是对文本的内容进行查找,当文件小的时候,其实是可以使用 Notepad++ 这样的软件进行查找,但是 Notepad++ 是有大文件限制的,所以我的想法是通过 bat 脚本的方式进行处理。
需求实现
@echo off rem 需要查找的第1个字符串 set str1="" rem 需要查找的第2个字符串 set str2="" rem 需要查找的第3个字符串 set str3="" rem 需要查找的文件 set filename="" rem 在当前脚本处查找1、2、3字符串并在输出到当前路径生成的 output.txt 文件 findstr /r "%str1% %str2% %str3%" %filename% > output.txt pause
实现功能
1、可以查找多个字符串;
2、可以将查找到的字符串输出到新的文本文件;
缺点
1、查找的字符串不能含有空格;
使用示例
比如我当前有一个文本文件(test.txt)的内容如下:
test1
test2
test3
test4
test5
test6
而我需要查找“test1”和“test5”,则可以新建一个 txt 文件,输入修改后的脚本内容为
@echo off rem 需要查找的第1个字符串 set str1="test1" rem 需要查找的第2个字符串 set str2="test5" rem 需要查找的文件 set filename="test.txt" rem 在当前脚本处查找1、2字符串并在输出到当前路径生成的 output.txt 文件 findstr /r "%str1% %str2%" %filename% > output.txt pause
然后保存为 find.bat 到 test.txt 文件的路径下,点击运行出现
关掉运行窗口后,可以看到当前路径下多了一个output.txt 文件,打开后是只有“test1”和“test5”的内容
由此完成文本的过滤。
总结
目前实现的脚本满足需求,就是每次都要填充内容,后面知道新的方法后再看看如果改进。