0

我需要使用PowerShell命令將字符串替換爲文件。如何使用命令替換文件中的內容

在文件中有XML元素,我需要用另一個字符串<version>3.0.0.0</version>替換特定元素<version>1.0.0.0</version>

對於正常的字符串可以寫象下面這樣:

(Get-Content "D:\data.text").replace('1.0.0', '3.0.0') | Set-Content D:\data.text 

如何做表達或圖案,其可以代替<version></version>元件之間的內容。


編輯:文件的

含量低於:

<?xml version="1.0"?> 
<package> 
    <metadata> 
    <id>C:\BuildAgent_SpiderWeb\work\52d106957b762949 \buildoutput\LatestPublished</id> 
    <version>3.0.0</version> 
    <authors>sonidha-a</authors> 
    </metadata> 
</package> 

需要:爲了替換ID元件和Version元件之間的內容。

+1

如果這是XML我推薦使用PowerShell的優秀的XML編輯器:'[XML] $數據=獲取內容「 d:\ Data.Text「; $ data.xyzVersion =「3.0.0.0」' –

+0

如果你想使用替換請發佈你的文件樣本,包括版本(所以我們可以看到它是否是同一行或有什麼驚喜) –

+0

我已經添加上面的細節。請提供我可以替換內容的getcontent命令。 – dsi

回答

3

不要對XML數據進行字符串替換。永遠。如果你這樣做,彩虹獨角獸將會死亡。

相反,使用PowerShell的XML解析器,如@致命,百吉餅已經建議:

[xml]$xml = Get-Content 'C:\path\to\your.xml' 
$xml.package.metadata.version = '3.0.0.0' 
$xml.Save('C:\path\to\output.xml') 
+0

如何執行這些單獨的多行命令到powerscript中?我是新的。 – dsi

+0

將其複製/粘貼到PowerShell控制檯或PowerShell腳本中。 –

+0

此外,我需要將' <文件src =「發佈\ ** \ **」target =「content \」/> '內容添加到「」末端元素的下方。你能告訴我該怎麼做。 – dsi