批处理脚本,用于在文本文件中查找和替换字符串,而无需创建用于存储修改文件的额外输出文件

时间:2014-04-15 06:17:01

标签: batch-file replace

我编写了一个批处理脚本来查找和替换文本文件中的字符串。以下是我的剧本。

@echo off &setlocal
set "search=%1"
set "replace=%2"
set "textfile=Input.txt"
set "newfile=Output.txt"
(for /f "delims=" %%i in (%textfile%) do (
    set "line=%%i"
    setlocal enabledelayedexpansion
    set "line=!line:%search%=%replace%!"
    echo(!line!
    endlocal
))>"%newfile%"
del %textfile%
rename %newfile%  %textfile%

我能够成功替换这个词。

但我不想创建Output.txt然后将其重命名为原始文件..

请帮我编辑文本文件而不将输出重定向到新文件..

1 个答案:

答案 0 :(得分:32)

@echo off 
    setlocal enableextensions disabledelayedexpansion

    set "search=%1"
    set "replace=%2"

    set "textFile=Input.txt"

    for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
        set "line=%%i"
        setlocal enabledelayedexpansion
        >>"%textFile%" echo(!line:%search%=%replace%!
        endlocal
    )
在开始处理之前,

for /f将读取所有数据(由type comamnd生成)。在子进程开始执行type时,我们包括重定向覆盖文件(因此它被清空)。一旦do子句开始执行(文件的内容在内存中进行处理),输出就会附加到文件中。