使用批处理文件来"读"一个文本文件,"插入"新行并保存在新文本文件中

时间:2014-06-13 04:19:01

标签: batch-file text insert

我有一个* .txt文件,其中包含以下几行

test1
A1 1 2 3 4
b2.13 
C3.14
D63829
A0 B1.1 C1.2 Z1.3
H1 Z0 K2.3 
A0 B1.2 C1.2 Z1.1
A0 B1.3 C1.4 Z1.5
......

我想要一个批处理文件,打开,读取和查找行" H1 Z0 K2.3"并插入两个新行,如

test1
    A1 1 2 3 4
    b2.13 
    C3.14
    D63829
    A0 B1.1 C1.2 Z1.3
    H1 Z0 K2.3 
    T20
    T19
    A0 B1.2 C1.2 Z1.1
    A0 B1.3 C1.4 Z1.5
    ......

的确,我编写了以下代码,但它不起作用!任何帮助将不胜感激

@ECHO OFF
::set SrcFolder=c:\test
::set DstFolder=C:\test1

set inputfile=C:\Users\old.txt
set outputfile=C:\Users\new.txt

for %%a in ("%inputFile%") do (
  (for /f "usebackq delims=" %%h in ("%%a") do (
    if "%%h" equ "H1 Z0 K2.3 " (
      echo T20
      echo T19
    ) else (
    echo.%%h
    )
  ))>"%outputfile%\%%~nxa"
)

ECHO.
ECHO Done!

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
setlocal

::set SrcFolder=c:\test
::set DstFolder=C:\test1

set inputfile=C:\Users\old.txt
set outputfile=C:\Users\new.txt

(for /F "usebackq delims=" %%a in ("%inputFile%") do (
   echo %%a
   if "%%a" equ "H1 Z0 K2.3 " (
      echo T20
      echo T19
   )
)) > "%outputfile%"

ECHO/
ECHO Done!

答案 1 :(得分:0)

我相信Aacini解决了您的代码中的小问题,并简化了它。

但我几乎从不使用FOR / F来修改文本文件。我发现它是不必要的复杂和缓慢。相反,我使用REPL.BAT - a hybrid JScript/batch utility执行正则表达式搜索并替换stdin并将结果写入stdout。它是纯粹的脚本,可以在任何现代Windows机器上从XP向上运行。完整的文档嵌入在脚本中。

将REPL.BAT与正则表达式一起使用:

type old.txt | repl "^H1 Z0 K2\.3 $" "$&\r\nT20\r\nT19" X >new.txt

或使用字符串文字:

type old.txt | repl "H1 Z0 K2.3 " "H1 Z0 K2.3 \r\nT20\r\nT19" LBEX >new.txt
相关问题