Пакетный скрипт: Как найти 2 строки из файла - PullRequest
0 голосов
/ 10 февраля 2012

Сгенерировано получение файла журнала, и я должен выяснить, нет ли следующих строк?

Файл журнала:

ftp> подключен к серверу.

ftp> mget xyz *

200 Тип установлен в A.

ftp> mget abc *

200 Установить тип в A

ftp> пока

И мне нужно выяснить, имеет ли указанный выше файл журнала: «200 Type установлен на A.

ftp>»

Пожалуйста, дайте мне знать, как искать последовательные строкиа во второй строке я пытаюсь найти только строку.

1 Ответ

1 голос
/ 10 февраля 2012

Я не уверен, есть ли пустая строка между каждой строкой или нет.Решение ниже предполагает, что между каждой строкой нет пустой строки.Другими словами, приведенное ниже решение будет соответствовать 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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...