使用Windows批处理文件在文本文件中添加新行

时间:2011-09-13 04:04:58

标签: windows batch-file newline stdout

我有一个文本文件,其中有超过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

4 个答案:

答案 0 :(得分:24)

我相信你正在使用

echo Text >> Example.txt 

功能

如果是这样,答案就是添加一个“。” (点)直接在回声之后没有别的。

示例:

echo Blah
echo Blah 2
echo. #New line is added
echo Next Blah

答案 1 :(得分:3)

您可以使用:

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

答案 2 :(得分:1)

免责声明:以下解决方案不会保留尾随标签。


如果您知道文本文件中的确切行数,请尝试以下方法:

@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行。)

该方法有一个小缺陷:如果文件以空行结尾,结果将是实际行数减1。如果您需要一种解决方法(或者只是想安全玩耍),您可以使用this answer中描述的方法。

答案 3 :(得分:-2)

假设您要插入特定的文本行(不是空行):

@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%