【问题标题】:Modify XML from the command line从命令行修改 XML
【发布时间】:2015-09-23 11:47:13
【问题描述】:

我有一个结构如下的 xml 文件,我想从命令行编辑这个文件。

<server>
    <service>
        <Connector port="8080" password="password1234"/>
    </service>
</server>

我想更改密码或端口号。

cmd 是否提供此选项,还是我需要额外的工具?我知道 PowerShell 可以做到,但这对我来说不是最好的解决方案。 (除了我没有用 powershell 运行它:()。

搜索“password1234”并替换它也可以,因为我的文件中有一个默认密码,它始终相同,必须替换。

【问题讨论】:

  • 您可以将端口和密码参数设为%1 %2。
  • 对不起,你能描述一下如何做的更详细一点吗?此外:不需要geh端口或密码值。搜索“password1234”并替换它也可以,因为我的文件中有一个默认密码,它始终相同,必须替换。
  • 我找到了 for /f 命令的一些解决方案,但这不包括替换 :(
  • 通过为您的操作系统添加标签(我猜是 Windows7(8?)),您可能会更多地关注您的问题。请注意每个标签上的关注者数量。 xml 人们会希望你安装 xmlstarlet,但你也必须学习这一点。搜索/替换 password1234 听起来像是解决此问题的“足够好”的方法。祝你好运。
  • 很高兴添加了 Powershell。这极大地改变了游戏规则。您是否尝试在此处搜索search replace [powershell]。我希望有很多解决方案,我很惊讶没有 PS 用户提供一些想法。通读一些评价很高的 PS(带有 XML)问题,看看是否需要添加任何其他信息以使您的问题脱颖而出。祝你好运。

标签: xml powershell command-line windows-7 cmd


【解决方案1】:

为了演示我使用的一种方法,首先在您的示例中创建 xml 文件:

为 XML 文件名定义一个变量

$xmlFile = "C:\temp\myconfig.xml"

定义要保存到文件的 XML 字符串

$xmlFromString = [xml]@"
<server>
<service>
<Connector port="8080" password="password1234"/>
</service>
</server>
"@

将xml内容保存到文件中

$xmlFromString.Save($xmlFile)

生成的文件内容

Get-Content -Path $xmlFile
<server>
  <service>
    <Connector port="8080" password="password1234" />
  </service>
</server>

这是更改值的 PowerShell 代码 从文件中获取 XML 内容

$xml = [xml](Get-Content -Path $xmlFile)

查找元素/节点并更改属性值

$node = $xml.selectSingleNode('//server/service/Connector')
$node.port = "9090"
$node.password = "MyNewPassord4321"

将 XML 内容保存回来

$xml.Save($xmlFile)

结果

Get-Content -Path $xmlFile
<server>
  <service>
    <Connector port="9090" password="MyNewPassord4321" />
  </service>
</server>

将命令保存到 PowerShell ps1 文件并通过 PowerShell 执行/运行。

我们需要更多详细信息来说明您的具体目标,例如:

  • 运行脚本的用户/帐户将拥有什么权限?
  • 脚本将从哪里运行?本地 PC 还是服务器?
  • 一个或多个服务器/工作站?
  • 通过 Windows 调度程序任务执行?

希望对您有所帮助。 - 布鲁克斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 2011-08-18
    • 2013-10-09
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多