2012-09-21 109 views
2

我是PowerShell和腳本/編程的初學者,但我正在嘗試編寫一個PowerShell腳本,它將搜索目錄中的每個XML文檔以查找CSV文件第1列中的值並將該找到的值替換爲相同CSV中列2中的值。然後該腳本需要轉到CSV的下一行並重復該過程並繼續,直到CSV的第1列中的所有值都被搜索並相應地被替換。Powershell:搜索用CSV替換XML

我拼湊在一起,但我不知道如何繼續下去。

$c = import-csv C:\somecsv.csv) 
$xmls2search=get-childitem C:\somedirectory\*.xml 
foreach ($xmldoc in $xmls2search) 
{ 
    (Get-Content $xmldoc.PSPath) | 
    Foreach-Object {$_ -replace $c[i].column1name, $c[i].column2name} | 
    Set-Content $xmldoc.PSPath 
} 

回答

3

鑑於你的情況,我可能會這樣做。

$c = Import-Csv yourcsv.csv 

Get-ChildItem *.xml | Foreach-Object { 
    # Out-String in the next line lets you work with a single string rather than an 
    # array of strings. 
    $xmldoc = (Get-Content $_.PSPath | Out-String) 

    # Loop through your CSV, updating $xmldoc with each pass 
    $c | Foreach-Object { 
    $xmldoc = $xmldoc -replace $_.column1name,$_.column2name 
    } 

    # Write the updated $xmldoc back to the original XML file's path 
    $xmldoc | Set-Content $_.PSPath 
} 
+0

非常感謝! Chris – user1689028