2015-07-06 185 views
3

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

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

我想更改密码或端口号。 cmd是否提供这个选项,还是我需要额外的工具?我知道PowerShell可以做到这一点,但这对我来说不是最好的解决方案。 (除了我没有得到它运行powershell :() 也可以搜索“password1234”并将其替换,因为我的文件中有一个默认的密码,它始终是相同的,这必须被替换。

+0

您可以使端口和密码参数%1%2。 – jdweng

+0

对不起,你能描述一下如何做得更详细些吗?另外:不需要创建端口或密码值。也可以搜索“password1234”并替换它,因为我的文件中有一个默认密码,它始终是相同的,必须替换它。 – Tobi123

+0

我找到了for/f命令的一些解决方案,但是这不包括替换:( – Tobi123

回答

2

为了证明一个方法我用让先在您的示例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文件并执行/通过运行电源外壳。

  • 将用户/帐户上运行什么权利的脚本有:

    究竟你试图完成的,如我们需要的其他详细信息?

  • 脚本将从哪里运行?本地PC或服务器?
  • 一台或多台服务器/工作站?
  • 通过Windows调度程序任务执行?

希望有帮助。 - 布鲁克斯