批处理文件有条件地替换文件的整行

时间:2014-02-26 16:57:06

标签: batch-file replace

我有一个包含各种行或文本的txt文件。它是一个配置文件,因此每一行都是一个新的配置设置。

我需要的是创建一个批处理文件,该文件将在此txt文件中搜索具有某个字符串的STARTS的行,然后用其他内容替换整行。我还需要保留空行。

例如,给定以下文本文件

Line 1
Line 2

Line 3 with some unknown text afterwards

Line 4 with some unknown text afterwards

我想用“这是替换线3”替换整个3号线,用“这是替换线4”替换整个4号线

Line 1
Line 2

This is replacement line 3

This is replacement line 4

如果我通过使用下面的代码知道整个第3行和第4行字符串将会是什么,我可以做到,但如果我只知道行的开头则不行。这也不会保留空行

:Variables
set InputFile=myfile.txt
set OutputFile=myfile.txt
set "_strFind1=Line 3 with some unknow text afterwards"
set "_strFind2=Line 4 with some unknow text afterwards"
set "_strInsert1=This is replacement line 3
set "_strInsert2=This is replacement line 4

:Replace
>"%OutputFile%" (
    for /f "usebackq delims=" %%A in ("%InputFile%") do (
       if "%%A" equ "%_strFind1%" (echo %_strInsert1%)
       else if "%%A" equ "%_strFind2%" (echo %_strInsert2%)
       else (echo %%A)
    )
)

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这使用名为repl.bat的帮助程序批处理文件 - 从https://www.dropbox.com/s/qidqwztmetbvklt/repl.bat

下载

repl.bat放在与批处理文件相同的文件夹中或放在路径上的文件夹中。

type "file.txt" |repl "^startingtext.*" "New line of text" >"newfile.txt"

请注意,替换文本是微软替换表达式,如果文本显示不正确,可能需要一些escaping