Batch file 批处理脚本:如何从文件中查找2行

Batch file 批处理脚本:如何从文件中查找2行,batch-file,Batch File,生成了一个日志文件getting,我必须找出下面的行是否存在 日志文件: ftp>已连接到服务器 ftp>mget xyz* 200类型设置为A ftp>mget abc* 200将类型设置为A ftp>再见 我必须找到上面的日志文件是否有: “200类型设置为A ftp>” 请告诉我如何搜索连续的行,在第二行中,我只想找到一个字符串。我不确定每行之间是否有空行。下面的解决方案假设每行之间没有空行。换句话说,下面的解决方案将匹配两行,第二行必须至少有一个字符 @echo off setlocal

生成了一个日志文件getting,我必须找出下面的行是否存在

日志文件:

ftp>已连接到服务器

ftp>mget xyz*

200类型设置为A

ftp>mget abc*

200将类型设置为A

ftp>再见

我必须找到上面的日志文件是否有: “200类型设置为A

ftp>”


请告诉我如何搜索连续的行,在第二行中,我只想找到一个字符串。

我不确定每行之间是否有空行。下面的解决方案假设每行之间没有空行。换句话说,下面的解决方案将匹配两行,第二行必须至少有一个字符

@echo off
setlocal disableDelayedExpansion
::Define LF variable containing a linefeed (0x0A)
set LF=^


::Above 2 blank lines are critical - do not remove

::Define CR variable containing a carriage return (0x0D)
for /f %%a in ('copy /Z "%~f0" nul') do set "CR=%%a"

::The above variables should be accessed using delayed expansion
setlocal enableDelayedExpansion

::regex "!CR!*!LF!" will match both Unix and Windows style End-Of-Line
findstr /rc:"!CR!*!LF!200 Type set to A!CR!*!LF!." log.txt >nul && (echo found) || echo not found
如果您试图在中间用空行匹配3行,则最后一行需要更改为

findstr /rc:"!CR!*!LF!200 Type set to A!CR!*!LF!!CR!*!LF!." log.txt >nul && (echo found) || echo not found
有关跨换行符搜索以及其他酷炫的FINDSTR功能(和bug!)的更多信息,请参阅