2012-02-10 92 views
0

生成了一個日誌文件gettting,我必須確定下列行是否存在?批處理腳本:如何從文件中找到2行

日誌文件:

FTP>連接到服務器。

FTP> MGET XYZ *

200類型設置爲A.

FTP> MGET ABC *

200集類型到

FTP>再見

我必須找到上面的日誌文件是否有: 「200類型設置爲A.

ftp>「

請讓我知道如何搜索連續的行,並在第二行我試圖找到一個字符串。

回答

1

我不確定每行之間是否有空行。下面的解決方案假設每行之間不存在空行。換句話說,下面的解決方案將匹配2行,並且第二行必須至少包含一個字符。

@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功能(和錯誤!)見What are the undocumented features and limitations of the Windows FINDSTR command?

相關問題