Если somepath
будет всегда статичным:
@echo off
set "_infile=YOURFILENAME HERE"
set "_strfind=somepath"
set "_strinsert=D:\workspace\e5\sample\src\products\sample"
for /f "tokens=2 delims=]" %%a in ('type "%_infile%" ^| find /v /n "" ^& break ^> "%_infile%"') do (
set "str=%%a"
call set "str=%%str:%_strfind%=%_strinsert%%%"
setlocal enabledelayedexpansion
echo(!str! >>%_infile%
endlocal
)
type %_infile%
Если somepath
может быть чем-либо, нам нужно быть более конкретным и сосредоточиться на ключе, поэтому это будет работать ТОЛЬКО, если файл находится в точном формате, как вы опубликовали! Как мы берем ключ по позиции в строке.
Поэтому, прежде чем продолжить, сделайте резервную копию вашего файла, так как это сломает его, если ваш формат не соответствует тому, который вы опубликовали.
@echo off
set "_infile=YOURFILENAME HERE"
set "_strfind=examplePath"
set "_strinsert= "examplePath": "D:\workspace\e5\sample\src\products\sample!","
for /f "tokens=2 delims=]" %%a in ('type "%_infile%" ^| find /v /n "" ^& break ^> "%_infile%"') do (
set "str=%%a"
setlocal enabledelayedexpansion
if "!str:~5,11!"=="%_strfind%" (
setlocal disabledelayedexpansion
set "str=%_strinsert%"
)
setlocal enabledelayedexpansion
echo(!str! >>%_infile%
endlocal
)
type %_infile%
Наконец, причина, по которой я использую delayedexpansion
в некоторых частях, заключается в том, чтобы просто обслуживать строки, содержащие !
.