Batch script to find and replace a string in text file without creating an extra output file for storing the modified file
batch-file, replace
Solution
@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` will read all the data (generated by the `type` comamnd) before starting to process it. In the subprocess started to execute the `type`, we include a redirection overwritting the file (so it is emptied). Once the `do` clause starts to execute (the content of the file is in memory to be processed) the output is appended to the file.
Problem
I have written a batch script to find and replace a string in a text file. Following is my 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% ``` I am able to replace the word successfully. But i dont want to create Output.txt and then rename it the original file.. Please help me out for editing a text file without redirecting the output to a new file..