BAT. Как скопировать часть файла начиная с определённой строки?

Данные.txt
Вступление.
На несколько строк.

Заголовок нужных данных
Иванов
Петров
Сидоров
Васечкин

Результат.txt
Иванов
Петров
Сидоров
Васечкин

Есть текстовые файлы неизвестного размера, нужная информация находится в конце. Предваряет её заранее известная строка, например, "Заголовок нужных данных". Нужно все строки после указанной (или вместе с ней - не важно) и дописать в конец другого файла.

Одно из возможных решений, но не полное. Работающий пример от некоего amel27 для вывода на экран следующей строки после разделителя начала данных. Попробовал повторить последнюю строку наращивая счётчик и столкнулся с тем, что скрипт не останавливается дойдя до конца файла.
@echo off
set file=1.txt
set word=искомое слово

for /f "tokens=1  delims=[]" %%n in ('find /i /n "%word%" ^<"%file%"') do set /a "$n=%%n+1"
for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%file%"^|findstr /b "\[%$n%\]"') do echo.%%b


Мой не работающий вариант "в лоб"
for /f "tokens=1  delims=[]" %%n in ('find /i /n "%word%" ^<"%file%"') do set /a "$n=%%n"
:doagain
set $flag1=1
set /a $n=%$n%+1
for /f "tokens=1* delims=[]" %%a in ('find /n /v "" ^<"%file%"^|findstr /b "\[%$n%\]"') do (echo.%%b & set $flag1=2)
if $flag1 leq 2 goto doagain
  • Вопрос задан
  • 3659 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Немного допилил:
@echo off
set "file=1.txt"
set "search=Заголовок нужных данных"
set "header_line="
for /f "tokens=1  delims=[]" %%a in ('find /i /n "%search%" "%file%" ') do set "header_line=%%a"
if defined header_line (
  more +%header_line% "%file%"
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы