Я не уверен, есть ли пустая строка между каждой строкой или нет.Решение ниже предполагает, что между каждой строкой нет пустой строки.Другими словами, приведенное ниже решение будет соответствовать 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 (и ошибках!) см. Каковы недокументированные функции и ограничения WindowsКоманда FINDSTR?