Нужно найти текст в файле журнала и отправить следующие пять строк в текстовый файл, используя файл .bat.

Я искал несколько дней и не смог найти ничего по моему конкретному вопросу.

У меня есть файл журнала, который я хотел бы найти (используя findstr) для слов «Успешный вход в систему», как только он будет найден, я хотел бы отметку времени, всю эту строку и следующие пять строк, отправленных в текстовый файл.

Я поиграл с findstr и попытался изменить другие предложения, которые я нашел здесь, но не смог найти способ включить следующие пять строк в свой вывод.

Заранее спасибо,

Эрик


person Eric S    schedule 30.05.2013    source источник


Ответы (2)


Загрузите grep с UnxUtils http://unxutils.sourceforge.net/.

выполнить: grep -A 5 «Вход в систему выполнен успешно» [имя файла журнала]> output.txt

person shak    schedule 31.05.2013

@ECHO OFF
SETLOCAL
SET /a gate=0
(
FOR /f "delims=" %%i IN ('type logfile.txt^|findstr /n "$" ') DO (
 SET "line=%%i"
 CALL :process
)
)>report.txt
GOTO :eof

:process
IF %gate% gtr 0 GOTO output
ECHO(%line%|FINDSTR /i /c:"login successful" >NUL
IF ERRORLEVEL 1 GOTO :EOF 
SET /a gate=6
:output
SET /a gate -=1
SET "line=%line:*:=%"
ECHO(%line%
GOTO :eof

Поскольку вы не указываете, может ли какая-либо из следующих 5 строк быть пустой, метод findstr/n используется для воспроизведения любой пустой строки.

По сути, если целевая строка найдена (я предположил, что регистр не учитывается), откройте ворота, чтобы пропустить 6 строк. Если шлюз открыт, номер первой строки удаляется, а требуемая строка отображается в файле назначения.

person Magoo    schedule 31.05.2013