我编写了一个批处理脚本来查找和替换文本文件中的字符串。以下是我的剧本。
@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然后将其重命名为原始文件..
请帮我编辑文本文件而不将输出重定向到新文件..
答案 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
子句开始执行(文件的内容在内存中进行处理),输出就会附加到文件中。