0

我正在尝试使用 xmlstarlet 插入一个新元素,但是当我运行该命令时,它只会列出我要插入的 xml 文件。任何建议都会很棒。

xml ed -s /chkSys/machine/registry -t elem -n key -v "" -i /registry/key -t attr -n value -v "'C:\Program Files\Microsoft SQL Server'" -v path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" --net \\server3\e$\temp\chksys\chksys.xml

##Old##
<?xml version="1.0" encoding="utf-8"?>
<chksys>
    <machine>
        <registry>

       </registry>
    </machine>
</chksys>

##New##
<?xml version="1.0" encoding="utf-8"?>
 <chksys>
    <machine>
       <registry>
           <key value="'C:\Program Files\Microsoft SQL Server'" path "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines\Directory\Admin\1075182566\DirectoryName"/>
       </registry>
    </machine>
 </chksys>
4

1 回答 1

2

您的命令有点偏离,您应该在插入时使用密钥的完整路径:

xml ed --net ^
    -s /chksys/machine/registry -t elem -n key -v "" ^
    -i /chksys/machine/registry/key -t attr -n value ^
      -v "'C:\Program Files\Microsoft SQL Server'" ^
    -i /chksys/machine/registry/key -t attr -n path ^
      -v "HKLM\software\symantec\Symantec Endpoint Protection\AV\Exclusions\ScanningEngines" ^
    OLDFILE > NEWFILE

这会将编辑后的 ​​xml 放入 NEWFILE,如果您想直接更改 OLDFILE,您可以使用 --inplace 或 -L 选项。

xml ed --net --inplace ^
    ...
于 2011-10-08T14:08:44.370 回答