@echo off
setlocal enableextensions disabledelayedexpansion
set "search=EikonPath"
set "replace=EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron"
set "textFile=D:\e4\office-shim\src\eikon-office-shim\config\install-settings.json"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
>>"%textFile%" echo(!line:%search%=%replace%!
endlocal
)
替换此:
"EikonPath": "%LOCALAPPDATA%\\Refinitiv\\Refinitiv Workspace"
收件人:
"EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron"
以上方法给出:
"EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron": "%LOCALAPPDATA%\\Refinitiv\\Refinitiv Workspace",
答案 0 :(得分:0)
您不应该替换文件内联。
最好将输出重定向到临时文件,然后替换原始文件。
另一个问题,您不仅尝试替换搜索字符串,还希望替换搜索字符串和该行的其余部分。
我更改了代码,将整个行替换为replace
变量
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=EikonPath"
set "replace="EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron""
set "textFile=test.json"
(
for /f "delims=" %%i in (%textFile%) do (
set "line=%%i"
setlocal enabledelayedexpansion
if not "!line:%search%=!" == "!line!" (
echo(!replace!
) else (
echo(!line!
)
endlocal
)
) > newfile.tmp
move /Y newfile.tmp "%textfile%"