Возврат окружающих строк в командный файл Windows

Я использую findstr искать строку в файле следующим образом:

findstr "test" file.txt

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

1 ответ

Решение

Ну вот

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=:" %%a in ('findstr /n "hello" file.txt') do (
set /a line=%%a
)
set /a num=0
for /l %%b in (3,-1,1) do (
set /a lines[!num!]=!line!-%%b
set /a num+=1
)
for /l %%c in (1,1,3) do (
set /a lines[!num!]=!line!+%%c
set /a num+=1
)
set /a count=1
for /f "tokens=* delims=" %%d in (file.txt) do (
for /l %%e in (%lines[0]%,1,%lines[5]%) do (
if !count!==%%e if not %%e==!line! echo %%d
)
set /a count+=1
)
pause >nul
Другие вопросы по тегам