Нечто подобное должно помочь.Вы можете изменить set /p
, чтобы он не отображал подсказку, и просто присвоить ему значение, в любом случае будет работать:
@echo off
setlocal enabledelayedexpansion
set inputfile=install.txt
set /p "_strfind=Enter value to search?"
set /p "_strinsert=Replacement value?"
for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
set "str=%%a"
set "str=!str:%_strfind%=%_strinsert%!"
set "str=!str:*]=!"
>>%inputfile% echo(!str!
)
Если вы не хотите, чтобы вас помповали, просто установите значения перед рукой:
@echo off
setlocal enabledelayedexpansion
set inputfile=install.txt
set "_strfind=80cl1"
set "_strinsert=84cl3"
for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
set "str=%%a"
set "str=!str:%_strfind%=%_strinsert%!"
set "str=!str:*]=!"
>>%inputfile% echo(!str!
)
Если по каким-либо причинам ваш файл может содержать !
, он не будет копировать их в файл, тогда просто используйте это:
@echo off
set "inputfile=ip.txt"
set /p "_strfind=string to replace?"
set /p "_strinsert=replacement string?"
for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
set "str=%%a"
setlocal enabledelayedexpansion
set "str=!str:%_strfind%=%_strinsert%!"
call set "str=%%str:*]=%%"
>>%inputfile% echo(!str!
endlocal
)
Правка согласно вашему комментарию:
@echo off
set "inputfile=install.txt"
set /p "_strfind=string to replace? "
set /p "_strinsert=replacement string? "
set /p "_strfind2=enter Executable numeric value to replace? "
set /p "_strinsert2=enter the replacement value for executable? "
set "_strfind2=%_strfind2%.exe"
set "_strinsert2=%_strinsert2%.exe"
for /f "tokens=*" %%a in ('type "%inputfile%" ^| find /v /n "" ^& break ^> "%inputfile%"') do (
set "str=%%a"
setlocal enabledelayedexpansion
set "str=!str:%_strfind%=%_strinsert%!"
set "str=!str:%_strfind2%=%_strinsert2%!"
call set "str=%%str:*]=%%"
>>%inputfile% echo(!str!
endlocal
)