Пакетный скрипт для поиска и замены строки в текстовом файле без создания дополнительного выходного файла для хранения измененного файла

Я написал пакетный скрипт, чтобы найти и заменить строку в текстовом файле. Ниже мой сценарий.

@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 будет читать все данные (сгенерированные type comamnd), прежде чем начать его обрабатывать. В подпроцессе начали выполнять type, мы включаем перенаправление, перезаписывающее файл (поэтому он очищается). Однажды do предложение начинает выполняться (содержимое файла находится в памяти для обработки), вывод добавляется в файл.

Другие вопросы по тегам