我有一个文本文件,里面有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
我有一个文本文件,里面有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
函数?
如果是这样,答案就是在echo后面直接添加一个"."(点),什么都不需要放。
示例:
echo Blah
echo Blah 2
echo. #New line is added
echo Next Blah
>>
将输出重定向到文件,将追加到文件的末尾。如果只使用一个尖括号,则输出将覆盖现有文件(如果存在),或者创建一个新文件(如果不存在)。 - Ahmad声明:以下解决方案不会保留行尾制表符。
如果您知道文本文件中的确切行数,请尝试以下方法:
@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%
这个循环会逐行读取原始文件并输出它们。输出会被重定向到一个临时文件。当到达某一行时,在它之前输出一个空行。
完成后,原始文件会被删除,而临时文件则被赋予原始文件的名称。
更新
如果事先不知道行数,可以使用以下方法来获取它:
FOR /F %%C IN ('FIND /C /V "" ^<%origfile%') DO SET totallines=%%C
(这行代码仅替换上面脚本中的SET totallines=200
行。)
该方法有一个小缺陷:如果文件以空行结尾,则结果将是实际行数减一。如果您需要解决方法(或只是想保险起见),您可以使用此答案中描述的方法。
您可以使用:
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
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%