2015-07-06 183 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調度程序任務執行?

希望有幫助。 - 布魯克斯