Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 替换同一文件中批处理脚本中包含键值对的文本_Windows_Batch File_Batch Rename - Fatal编程技术网

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%"