Пакет script для поиска и замены строки в текстовом файле без создания дополнительного выходного файла для хранения измененного файла
Я написал пакет script, чтобы найти и заменить строку в текстовом файле. Ниже приведен мой script.
@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
@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
прочитает все данные перед началом обработки. Таким образом, в процессе чтения данных файл опустеет. Затем весь вывод добавляется к файлу.