BOfH_666 585 Geschrieben 5. Oktober 2021 Melden Geschrieben 5. Oktober 2021 Am 5.10.2021 um 13:11 schrieb Proll012: versteh ich jetzt doch schon deutlich mehr. :)) Mehr Ich fürchte, da machst Du Dir ein bissl was vor. Es gibt in PowerShell verschiedene Ansätze, wie man Schleifen realisieren kann. Einmal die Pipe-Methode und dann die "Klassische" Schleifen-Methode. Schau Dir mal die Beispiele in den Dokus an, die ich oben verlinkt hatte. Die Dateinamen sollten dann in der Schleifenvariablen stecken, damit Du in jedem Schleifendurchlauf genau eine Datei beackerst. 1 Zitieren
Proll012 0 Geschrieben 5. Oktober 2021 Autor Melden Geschrieben 5. Oktober 2021 Am 5.10.2021 um 13:20 schrieb BOfH_666: Ich fürchte, da machst Du Dir ein bissl was vor. Mehr Von dir aus betrachtet ja ganz sicher Von mir aus gesehen besteht Hoffnung Lese die gerade:) Auch schon was gefunden:D Zitieren
BOfH_666 585 Geschrieben 5. Oktober 2021 Melden Geschrieben 5. Oktober 2021 Am 5.10.2021 um 13:34 schrieb Proll012: Auch schon was gefunden:D Mehr Na ma kukn, wie's weitergeht. Wenn Du wieder etwas postest, bitte möglichst das komplette Skript. 1 Zitieren
Proll012 0 Geschrieben 7. Oktober 2021 Autor Melden Geschrieben 7. Oktober 2021 (bearbeitet) Am 5.10.2021 um 13:36 schrieb BOfH_666: das komplette Skript. Mehr Gesagt, getan. $quellpfad ="C:\Users\MeinName\Desktop\XmlFutterTest" $XmlData = get-ChildItem $quellpfad "=.xml" -Recurse foreach ($xmlobject in $XmlData) { [xml]$xml = get-content $xmlobject.Fullname foreach ($Feature in ($xmlobject.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $xmlobject.CreateNode("element", "FVALUE", " ") $child.InnerText = $Value $Feature.AppendChild($child) } } $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } $xml.Save($xmlobject.Fullname) } Holzweg? Formfehler? zumindest bekomme ich keinen Fehler angezeigt. Passieren tut aber auch nichts :/ bearbeitet 7. Oktober 2021 von Proll012 Zitieren
BOfH_666 585 Geschrieben 7. Oktober 2021 Melden Geschrieben 7. Oktober 2021 Ich würde Dir empfehlen, Deinen Code so explizit wie irgend möglich zu schreiben, keine Parameternamen wegzulassen, keine Aliase zu benutzen und so weiter. Das sollte Dir helfen, Deinen eigenen Code zu verstehen. Auch solltest Du, wenn Dein Code nicht das tut, was Du Dir erhoffst, selbst versuchen herauszufinden, warum das nicht so ist. Wenn Du Variablen erzeugst und füllst, lass Dir den Inhalt der Variablen einfach auf der Konsole ausgeben, das sollte Dich schon viel weiter bringen. Und die Methoden aus den Links, die ich Dir in dem anderen Thread gepostet hatte, machen dann den Rest. Am 7.10.2021 um 13:27 schrieb Proll012: Holzweg? Formfehler? Mehr Wenn das nicht ein Fehler ist, der beim hier reinkopieren passiert ist, suchst Du in Deiner zweiten Code-Zeile nach einer (1) ganz bestimmten XML-Datei ("=.xml") und weist das Ergebnis einer Variablen zu. Eine Schleife über ein einzelnes Element, gibt im besten Fall einfach dieses eine Element wieder aus. In Deiner 4. Code-Zeile liest Du den Inhalt der Datei aus und speicherst ihn als XML-Objekt in der Variablen $xml. In der nächsten Zeile versuchst Du auf das XML-Object zuzugreifen, benutzt aber die falsche Variable - nämlich $xmlobject anstatt $xml. Am 7.10.2021 um 13:27 schrieb Proll012: zumindest bekomme ich keinen Fehler angezeigt. Mehr ... was ja nicht heißt, dass der Code fehlerfrei wäre ... Am 7.10.2021 um 13:27 schrieb Proll012: Passieren tut aber auch nichts Mehr ... kann ja auch nicht. Schau Dir doch bitte nochmal an, wie man ein PowerShell-Skript debugged! Zitieren
Beste Lösung Proll012 0 Geschrieben 8. Oktober 2021 Autor Beste Lösung Melden Geschrieben 8. Oktober 2021 (bearbeitet) Nicee danke dir, $quellpfad ="C:\Users\MeinName\Desktop\Experiment,Test" $XmlData = get-ChildItem $quellpfad "*.xml" -Recurse foreach ($xmlobject in $XmlData) { [xml]$xml = get-content $xmlobject.Fullname foreach ($Feature in ($xml.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES).FEATURE ) { if ($Feature.FVALUE -match ";") { $SplittedFVALUE = ($Feature.FVALUE -split ';').trim() foreach ($Value in $SplittedFVALUE) { $child = $xml.CreateNode("element", "FVALUE", " ") $child.InnerText = $Value $Feature.AppendChild($child) } $ItemToRemove = $Feature.SelectSingleNode('FVALUE') $Feature.RemoveChild($ItemToRemove) } } $xml.Save($xmlobject.Fullname) } So funktionierts :)))))))) bis jetzt. bearbeitet 8. Oktober 2021 von Proll012 Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.