@Mon4ik

CMD. Как используя findstr вывести несколько строк подряд?

Есть команда
certutil F:\\find\\3123.crl | findstr 0178dd6f0071aca5b6474113327488997f

Команда ищет серийник в списке отозванных сертификатов и возвращает строку, если он там есть
Возвращается строка:
Серийный номер: 0178dd6f0071aca5b6474113327488997f

Как сделать, чтобы при поиске по серийному номеру, возвращались все связанные строки.
Сам список выглядит вот так:

Серийный номер: 01410749007eac8fad4f2a72239feafca1
Дата отзыва: 25.11.2020 11:09
Расширения: 1
2.5.29.21: Флаги = 0, Длина = 3
Код причины списка отзыва (CRL)
Сертификат заменен (4)

Серийный номер: 01f47249007eac89984f70f3ce0c31a004
Дата отзыва: 25.11.2020 10:45
Расширения: 1
2.5.29.21: Флаги = 0, Длина = 3
Код причины списка отзыва (CRL)
Сертификат заменен (4)

Серийный номер: 019f296d007eac0ab04dcfeee27373ad6c
Дата отзыва: 25.11.2020 9:40
Расширения: 1
2.5.29.21: Флаги = 0, Длина = 3
Код причины списка отзыва (CRL)
Сертификат заменен (4)

То есть нужно выводить все строки до пустой.
  • Вопрос задан
  • 852 просмотра
Пригласить эксперта
Ответы на вопрос 3
vasilyevmn
@vasilyevmn
DevOps
Циклом, примеры под ваш вопрос есть тут:

https://www.cyberforum.ru/cmd-bat/thread786795.html
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Если certutil умеет выводить данные только по конкретному сертификату из списка отзыва, то можно найдя вашей командой искомый серийник еще раз вызвать certutil уже с конкретным сертификатом.
Винды под рукой сейчас нет, проверить свое предположение не могу.
Ответ написан
Комментировать
wisgest
@wisgest
Не ИТ-специалист
Mожно так:
@echo off
certutil F:\\find\\3123.crl| find /v /n "">temp.txt
set "str=0178dd6f0071aca5b6474113327488997f"
for /f "delims=[]" %%1 in ('find "%str%"^<temp.txt') do  call :sub %%1
del temp.txt
exit /b

:sub
set /a skip = %1 - 1
for /f "skip=%skip% tokens=1,* delims=]" %%1 in (temp.txt) do (
	echo(%%2
	if "%%2"=="" exit /b
)

(Если будут ошибки с кодировкой, попробуйте добавить второй или третьей строкой chcp 1251>nul.)

При желании можно сделать и без внешних утилит find или findstr
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы