0
生成了一個日誌文件gettting,我必須確定下列行是否存在?批處理腳本:如何從文件中找到2行
日誌文件:
FTP>連接到服務器。
FTP> MGET XYZ *
200類型設置爲A.
FTP> MGET ABC *
200集類型到
FTP>再見
我必須找到上面的日誌文件是否有: 「200類型設置爲A.
ftp>「
請讓我知道如何搜索連續的行,並在第二行我試圖找到一個字符串。
生成了一個日誌文件gettting,我必須確定下列行是否存在?批處理腳本:如何從文件中找到2行
日誌文件:
FTP>連接到服務器。
FTP> MGET XYZ *
200類型設置爲A.
FTP> MGET ABC *
200集類型到
FTP>再見
我必須找到上面的日誌文件是否有: 「200類型設置爲A.
ftp>「
請讓我知道如何搜索連續的行,並在第二行我試圖找到一個字符串。
我不確定每行之間是否有空行。下面的解決方案假設每行之間不存在空行。換句話說,下面的解決方案將匹配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?