BOfH_666 577 Geschrieben 5. Oktober 2021 Melden Teilen Geschrieben 5. Oktober 2021 vor 5 Minuten schrieb Proll012: versteh ich jetzt doch schon deutlich 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 Link zu diesem Kommentar
Proll012 0 Geschrieben 5. Oktober 2021 Autor Melden Teilen Geschrieben 5. Oktober 2021 vor 11 Minuten schrieb BOfH_666: Ich fürchte, da machst Du Dir ein bissl was vor. Von dir aus betrachtet ja ganz sicher Von mir aus gesehen besteht Hoffnung Lese die gerade:) Auch schon was gefunden:D Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 5. Oktober 2021 Melden Teilen Geschrieben 5. Oktober 2021 vor 1 Minute schrieb Proll012: Auch schon was gefunden:D Na ma kukn, wie's weitergeht. Wenn Du wieder etwas postest, bitte möglichst das komplette Skript. 1 Zitieren Link zu diesem Kommentar
Proll012 0 Geschrieben 7. Oktober 2021 Autor Melden Teilen Geschrieben 7. Oktober 2021 (bearbeitet) Am 5.10.2021 um 15:36 schrieb BOfH_666: das komplette Skript. 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 Link zu diesem Kommentar
BOfH_666 577 Geschrieben 7. Oktober 2021 Melden Teilen 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. vor 4 Stunden schrieb Proll012: Holzweg? Formfehler? 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. vor 4 Stunden schrieb Proll012: zumindest bekomme ich keinen Fehler angezeigt. ... was ja nicht heißt, dass der Code fehlerfrei wäre ... vor 4 Stunden schrieb Proll012: Passieren tut aber auch nichts ... kann ja auch nicht. Schau Dir doch bitte nochmal an, wie man ein PowerShell-Skript debugged! Zitieren Link zu diesem Kommentar
Beste Lösung Proll012 0 Geschrieben 8. Oktober 2021 Autor Beste Lösung Melden Teilen 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 Link zu diesem Kommentar
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.