站点图标 AI技术聚合

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”的内容

由此完成文本的过滤。

总结

目前实现的脚本满足需求,就是每次都要填充内容,后面知道新的方法后再看看如果改进。

退出移动版