Windows 替换同一文件中批处理脚本中包含键值对的文本
替换此项:Windows 替换同一文件中批处理脚本中包含键值对的文本,windows,batch-file,batch-rename,Windows,Batch File,Batch Rename,替换此项: @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-setti
@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": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron"
您不应该内联替换文件。
最好将输出重定向到临时文件,然后替换原始文件 另一个问题是,您不仅要替换搜索字符串,还要替换搜索字符串和行的其余部分。
我更改了代码,用
replace
变量替换整行代码
"EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron": "%LOCALAPPDATA%\\Refinitiv\\Refinitiv Workspace",
您不应该内联替换文件。
最好将输出重定向到临时文件,然后替换原始文件 另一个问题是,您不仅要替换搜索字符串,还要替换搜索字符串和行的其余部分。
我更改了代码,用
replace
变量替换整行代码
"EikonPath": "D:\\e5\\desktopframework\\src\\products\\eikon-on-electron": "%LOCALAPPDATA%\\Refinitiv\\Refinitiv Workspace",
我想更新同一个文件。我用现有文件名替换了
newfile.tmp
,但所有内容都是deleted@kitu你期待什么?写入正在读取的同一个文件时,它应该如何工作?因此,请写入临时文件,然后用临时文件替换原始文件。我要更新同一文件。我用现有文件名替换了newfile.tmp
,但所有内容都是deleted@kitu你期待什么?写入正在读取的同一个文件时,它应该如何工作?因此,请写入临时文件,然后用临时文件替换原始文件
@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%"