Ответ 1
Я считаю, что вы используете
echo Text >> Example.txt
функция?
Если так, то ответ будет просто добавлением ".". (Dot) непосредственно после эха, где ничего нет.
Пример:
echo Blah
echo Blah 2
echo. #New line is added
echo Next Blah
У меня есть текстовый файл с более чем 200 строками, и я просто хочу добавить новую строку перед строкой 4. Я использую Windows XP.
Пример текстового файла перед входом:
header 1
header 2
header 3
details 1
details 2
После вывода:
header 1
header 2
header 3
<----- This is new line ---->
details 1
details 2
Я считаю, что вы используете
echo Text >> Example.txt
функция?
Если так, то ответ будет просто добавлением ".". (Dot) непосредственно после эха, где ничего нет.
Пример:
echo Blah
echo Blah 2
echo. #New line is added
echo Next Blah
Вы можете использовать:
type text1.txt >> combine.txt
echo >> combine.txt
type text2.txt >> combine.txt
или что-то вроде этого:
echo blah >> combine.txt
echo blah2 >> combine.txt
echo >> combine.txt
echo other >> combine.txt
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: нижеприведенное решение не сохраняет завершающие вкладки.
Если вы знаете точное количество строк в текстовом файле, попробуйте выполнить следующий метод:
@ECHO OFF
SET origfile=original file
SET tempfile=temporary file
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%
Цикл считывает строки из исходного файла один за другим и выводит их. Вывод перенаправляется во временный файл. Когда достигается определенная линия, перед ней выводится пустая строка.
После завершения первоначального файла удаляется, а временному присваивается исходное имя.
UPDATE
Если количество строк неизвестно заранее, вы можете использовать следующий метод для его получения:
FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C
(Эта строка просто заменяет строку SET totallines=200
в приведенном выше script.)
Метод имеет один крошечный недостаток: если файл заканчивается пустой строкой, результатом будет фактическое количество строк минус единица. Если вам необходимо обходное решение (или просто хотите играть безопасно), вы можете использовать метод, описанный в этом ответе.
Предположим, вы хотите вставить определенную строку текста (а не пустую строку):
@echo off
FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C
set /a totallines+=1
@echo off
<%origfile% (FOR /L %%i IN (1,1,%totallines%) DO (
SETLOCAL EnableDelayedExpansion
SET /p L=
IF %%i==%insertat% ECHO(!TL!
ECHO(!L!
ENDLOCAL
)
) >%tempfile%
COPY /Y %tempfile% %origfile% >NUL
DEL %tempfile%