@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",
您不应该替换文件inline。最好将输出重定向到一个临时文件,然后替换原始文件。
另一个问题,您不仅尝试替换搜索字符串,还希望替换搜索字符串和该行的其余部分。我更改了代码,将整个行替换为repalce
变量
@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 "!line:%search%=!" NEQ "!line!" (
echo(!replace!
) ELSE (
echo(!line!
)
endlocal
)
) > newfile.tmp