美好的一天。
我有一堆日志文件,其中包含文件夹路径中的某个文件夹,即“/ input”,它是路径名变化的一部分 - “/ input”是此处唯一的常量...
如何扫描所有日志文件(* .log),查找“/ input”和写入整行的所有子字符串实例,包含路径的这一部分,是“/ input”,是一个新的文本文件?
日志文件中一行的示例:
2014-01-16 00:33:57 10.0.1.169 ddca 192.168.34.11 21 CWD /DDAA/Input/ 250 0 0
如何将包含此部分“/ input”的所有行写入新文本文件?
感谢。
答案 0 :(得分:1)
findstr /i /c:"/input" *.log >output.txt
/i
开关使搜索大小写不敏感。使用/c:
开关,以便不将前导/
视为切换指示符。
因为使用了通配符,所以它会在每行前面加上文件名,后跟冒号,如下所示
filename.log:2014-01-16 00:33:57 10.0.1.169 ddca 192.168.34.11 21 CWD /DDAA/Input/ 250 0 0
答案 1 :(得分:1)
@echo off
setlocal enableextensions
set "source=c:\where\the\log\files\are"
set "target=c:\output\folder\newFile.log"
pushd "%source%"
(for /f "tokens=1,* delims=:" %%a in ('findstr /i /l /c:"/input/ " "*.log"') do (
echo(%%b
)) > "%target%"
popd
使用findstr搜索字符串。它将返回一个字符串,其中包含找到该字符串的文件名,后跟冒号和日志文件中的整行。然后,使用for
命令,使用冒号作为分隔符来分割此行,并回显该行的右侧部分(日志文件中的原始行)。然后将for
命令的输出重定向到最终文件。
pushd
和popd
用于确保对日志文件的引用以及findstr
命令输出中的名称不包含干扰分割的aditional冒号一部分。
答案 2 :(得分:0)
很多选择。你可以创建一个小工具来为你做这个,但我的猜测是某个地方已经完成了这个。你有没有谷歌这样的东西?
如果您需要一些手工操作,我知道Notepad ++具有搜索匹配(子)字符串的文件夹中的txt文件的功能。