schniefnase
Goto Top

Skript zum Ersetzen von bestimmten Zeilen in XML-Datei

Hallo zusammen,

ich habe folgende Frage:

In einer TXT-Datei habe ich eine Liste mit 1.000 UUIDs die wie folgt aussehen: ec9cdfcf7bcc4ad5b973d0001.
Zudem habe ich 1.000 XML-Dateien wo diese UUIDs eingesetzt werden müssen - und das an zwei Stellen.

Einmal hier:
<nachr:ProzessID>4968c13f169f42738a2271be6</nachr:ProzessID>

und einmal hier:
<xf:ID>ec9cdfcf7bcc4ad5b973d0e36</xf:ID>

Ich müsste also ein Skript haben, dass das Verzeichnis mit den XML-Dateien durchläuft und Zeilenweise die UUIDs aus der TXT-Datei holt und an den beiden Stellen ersetzt. Die 1.000 XML-Dateien sind "Klone" - also exakt identisch. Die beiden o.g. IDs sind also immer identisch. Nach dem Vorgang des Ersetzens wären sie es nicht mehr, da dann jede XML an den zwei Stellen eine neue identische ID hat.

Früher hätte ich für so was Mapforce genommen (hab ich aber leider nicht mehr). Ich habe nur Notepad ++ und meine Windows Command Line bzw. Powershell.

Dank euch.

Content-Key: 2278872953

Url: https://administrator.de/contentid/2278872953

Printed on: April 28, 2024 at 03:04 o'clock

Mitglied: 1915348599
Solution 1915348599 Mar 25, 2022 at 11:25:46 (UTC)
Goto Top
$guids = gc "d:\guids.txt"  
$cnt = 0
foreach($file in Get-ChildItem "d:\ordner" -File -Filter *.xml){  
    [xml}$xml = Get-Content $file.Fullname
    $xml.GetElementsByTagName('nachr:ProzessID') | %{$_.InnerText = $guids[$cnt]}  
    $xml.GetElementsByTagName('xf:ID') | %{$_.InnerText = $guids[$cnt]}  
    $xml.Save($file.Fullname)
    $cnt++
}
Member: Schniefnase
Schniefnase Mar 28, 2022 updated at 09:00:52 (UTC)
Goto Top
Zitat von @1915348599:

$guids = gc "d:\guids.txt"  
$cnt = 0
foreach($file in Get-ChildItem "d:\ordner" -File -Filter *.xml){  
    [xml}$xml = Get-Content $file.Fullname
    $xml.GetElementsByTagName('nachr:ProzessID') | %{$_.InnerText = $guids[$cnt]}  
    $xml.GetElementsByTagName('xf:ID') | %{$_.InnerText = $guids[$cnt]}  
    $xml.Save($file.Fullname)
    $cnt++
}

Dank dir. Das ist ein Powershell Skript, richtig?
Wenn ja:
Ich lege es mir in ein PS1 File, passe die beiden Pfade an und lass es laufen via Powershell ISE. Korrekt?