2012-02-13 69 views
2

我有一個.msha文件。以下是該文件的內容。如何使用powershell替換msha文件中的值?

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Class References</title> 
</head> 
<body class="vendor-book"> 
    <div class="details"> 
     <span class="vendor">Pearson</span> 
     <span class="locale">en-us</span> 
     <span class="product">Class References</span> 
     <span class="name">Class References</span> 
    </div> 
    <div class="package-list"> 
     <div class="package"> 
      <!-- NOTE: The "name" span value cannot contain any periods! --> 
      <span class="name">ClassReference</span> 
      <a class="current-link" href="ClassReference.mshc">ClassReference.mshc</a> 
     </div> 
    </div> 
</body> 
</html> 

我不得不更換以下標記

<a class="current-link" href="ClassReference.mshc">ClassReference.mshc</a> 

如下

<a class="current-link" href="ClassReference.mshc.cab">ClassReference.mshc</a> 

如何使用PowerShell辦呢?

回答

2

試試這個:

${C:\test\test.msha} = ${C:\test\test.msha} -replace 'href="ClassReference\.mshc"','href="ClassReference.mshc.cab"' 
1

最簡單的方法是將文件讀取爲XML並替換標記。以下內容僅在標籤始終採用相同格式時纔有效。

$xml = [xml](Get-Content C:\script\test.hta) 
$xml.html.body.div[1].div.a.href = "ClassReference.mshc.cab" 
$xml.html.body.div[1].div.a.href 
$xml.InnerXml.ToString() | Out-File .\test.hta 

HTH

+0

當我使用此建議時,它會丟失格式。 msha文件中的所有行都顯示爲一行。 out-file是否在格式化方面做了一些事情? – Samselvaprabu 2012-02-13 11:32:15

0

你可以通過閱讀該文件的內容作爲文本做到這一點,並使用-replacestring operator在PowerShell中做一個簡單的搜索&替換

(Get-Content MyFile.hta) -replace "href=`"ClassReference.mshc`"", "href=`"ClassReference.mshc.cab`"" ` 
    | Set-Content MyFile.hta 
相關問題