@echo off
setlocal disableDelayedExpansion

:Variables
set InputFile=%1
set OutputFile=%InputFile%#
set "_strFind=%2"
set "_strInsert=%3"
set "_withoutdelete=%4"

:Replace
>"%OutputFile%" (
  for /F "delims=" %%L in ('findstr /n "^" "%InputFile%"') do (
    set "line=%%L"
    setlocal EnableDelayedExpansion

    set "line=!line:*:=!"
    if "!line!" neq "" (
      set "_line=!line:%_strFind%=%_strInsert%!"
    ) else (
      set _line=!line!
    )

    echo.!_line!
    endlocal
  )
)

if "%_withoutdelete%"=="" (
  del %InputFile%
  copy %OutputFile% %InputFile%>nul
  del %OutputFile%
)
