Jump to content

PowerShell Bearbeitung richtig Speichern


Go to solution Solved by Proll012,

Recommended Posts

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.

  • Like 1
Link to post
Posted (edited)
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? :lool: zumindest bekomme ich keinen Fehler angezeigt. Passieren tut aber auch nichts :/

Edited by Proll012
Link to post

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 ... :aha2:

 

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!

 

Link to post
  • Solution
Posted (edited)

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. 

Edited by Proll012
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...