ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Приведенное ниже решение не сохраняет конечные вкладки.
Если вам известно точное количество строк в текстовом файле, попробуйте следующий метод:
@ECHO OFF
SET origfile=<i>original file</i>
SET tempfile=<i>temporary file</i>
SET insertbefore=4
SET totallines=200
<%origfile% (FOR /L %%i IN (1,1,%totallines%) DO (
SETLOCAL EnableDelayedExpansion
SET /P L=
IF %%i==%insertbefore% ECHO(
ECHO(!L!
ENDLOCAL
)
) >%tempfile%
COPY /Y %tempfile% %origfile% >NUL
DEL %tempfile%
Цикл читает строки из исходного файла одну за другой и выводит их.Вывод перенаправляется во временный файл.При достижении определенной строки перед ней выводится пустая строка.
После завершения исходный файл удаляется, а временному присваивается исходное имя.
ОБНОВЛЕНИЕ
Если число строк заранее неизвестно, вы можете использовать следующий метод для его получения:
FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C
(Эта строка просто заменяет строку SET totallines=200
вприведенный выше скрипт.)
У метода есть один маленький недостаток: если файл заканчивается пустой строкой, результатом будет фактическое количество строк минус одна.Если вам нужен обходной путь (или вы просто хотите быть в безопасности), вы можете использовать метод, описанный в этом ответе .