Search Windows批处理以搜索两个相应的文本

Search Windows批处理以搜索两个相应的文本,search,batch-file,Search,Batch File,我在一个文件夹中有8000多个XML文件。他们有这么多的文字在里面。这段文字对我来说很重要: MSSQLSERVER MSSQLSERVER d:\MSSQL\binn\sqlservr.exe 本地系统 自己的过程 自动的 跑步 并非所有文件都包含此文本(并非所有机器都安装了此服务),因此我需要查找包含行的文件 MSSQLSERVER 并且还包含 自动 同时,。第二行可以在文件中多次找到。因此,在第一次搜索之后,我们需要向下移动5行,看看该行是否包含automatic 最终结果应该在out

我在一个文件夹中有8000多个XML文件。他们有这么多的文字在里面。这段文字对我来说很重要:


MSSQLSERVER
MSSQLSERVER
d:\MSSQL\binn\sqlservr.exe
本地系统
自己的过程
自动的
跑步

并非所有文件都包含此文本(并非所有机器都安装了此服务),因此我需要查找包含行的文件

MSSQLSERVER

并且还包含

自动

同时,。第二行可以在文件中多次找到。因此,在第一次搜索之后,我们需要向下移动5行,看看该行是否包含
automatic

最终结果应该在
output.txt
中,并且应该只包含包含这两个文本的文件名

你能帮帮我吗? 多谢各位

编辑: 我已经试过了,但它仅限于在单个文件中搜索,它会将一些奇怪的输出打印到屏幕上,而不是将文件名打印到output.txt。我想完成它,但我不是那么好:(

@echo关闭
设置变量4=
rem获取findstr发生的行号
对于/f“tokens=1 delims=:”%%D in('findstr/N“MSSQLSERVER”“a.xml“)do(
set var4=%%D
)
echo var4:%var4%
rem获取下面两行的数量(即跳过=行+1)
set/A skip=var4+4
回显跳过:%skip%
rem如果在第4部分中找到文本
如果定义为var4(
rem从文件中获取该行(不是从findstr)
对于/f(a.xml)中的“跳过=%skip%tokens=2 delims=>”%%E,执行echo%%E
)

欢迎使用Stackoverflow。因此,这里不是输入需求和获取程序的地方。到目前为止,您尝试了什么?哪些有效,哪些无效?您收到了什么错误消息?为什么它需要是批处理文件?您是否知道XML属性
type=“attrib”value=“0”
value=“0”type=“attrib”
type='attrib'value='0'
是等价的吗?我不是XML文件的程序员。我真的不在乎这一点。我真的只在乎找到包含这两个文本的文件名。如果你不在乎,你可能会得到错误的结果。其他问题呢?我尝试了这两个:首先-在所有xml文件并将xml文件名写入output.txt。它不会搜索
自动
文本。
@echo off findstr/i/n>MSSQLSERVER“*.xml>output.txt,如果%errorlevel%==0(echo find!logged files into results.txt),则搜索其他(echo未找到匹配项)
@echo off
set var4=
rem Get the LINE NUMBER where the findstr happen
for /f "tokens=1 delims=:" %%D in ('findstr /N "MSSQLSERVER</hwOSServiceName>" "a.xml"') do (
   set var4=%%D
)
echo var4: %var4%

rem Get the number of two lines below (that is, skip=line+1)
set /A skip=var4+4
echo skip: %skip%
rem If text found in part4
if defined var4 (
   rem Get that line from the file (NOT from findstr)
   for /f "skip=%skip% tokens=2 delims=>" %%E in (a.xml) do echo %%E
)