PowersShell nach Semikolon Zeilenumbruch?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Wenn das wirklich immer so in einer Zeile steht, brauchst du nur mit Get-Content die Datei einlesen und dann mit einer foreach-Schleife Zeile füe Zeile durchgehen und dann mit einer einfachen If-Condition abfragen ob FValue drinnen steht und da drinnen mit Regex das Semikolon entfernen und alles dann in eine neue Datei schreiben

Woher ich das weiß:Berufserfahrung – arbeite seit vielen Jahren in der IT
SolutionSearch 
Fragesteller
 21.09.2021, 15:34

danke dir, ich bin soweit gekommen das ich die Datei einlesen konnte und mir alle Inhalte von FVALUE anzeigen lassen kann.

Foreach & If-Condition

kannst du dazu ein Beispiel geben? :D

0
TheFamousSpy  22.09.2021, 01:11
@SolutionSearch
foreach ($Zeile in $Dateiinhalt)
{
  if ($Zeile -like "*<FVALUE>*")
  {
      $AngepassteZeile = $Zeile.replace(';','</FVALUE><FVALUE>')
      Add-Content -Path .\neueDatei.xml -Value $AngepassteZeile  
  }
  else
  {
    Add-Content -Path .\neueDatei.xml -Value $Zeile 
  }
}

Die Datei muss natürlich vorab angelegt sein, sonst kommt ein Fehler.

Hab den Code nicht getestet, müsste aber funktionieren.

1
SolutionSearch 
Fragesteller
 24.09.2021, 11:09
@TheFamousSpy

Alsoo, danke dir erstmal für deine Antwort:)

Ich habe deinen Code mal angefügt und $Dateiinhalt durch das ersetzt was ich glaub da stehen muss. (bin Newbie)

So 100% richtig funktioniert das aber noch nicht :(

PShell rattert die Inhalte durch

macht eine neue Datei, aber: "Die XML-Seite kann nicht angezeigt werden"

So habe ich den Code ausgeführt. $XmlData beinhaltet den direkten Pfad nach <FVALUE> In der Struktur gibt es aber noch mehr Nebenpunkte. Muss ich das irgendwie berücksichtigen?

$XmlData = [xml](Get-Content C:\Users\MeinName\Desktop\DE_nv2040.xml)

#$xmlData.GetType()

$XmlData.BMECAT.T_NEW_CATALOG.PRODUCT.PRODUCT_FEATURES.FEATURE.FVALUE

foreach ($Zeile in $XmlData)
{
  if ($Zeile -like "*<FVALUE>*")
  {
      $AngepassteZeile = $Zeile.replace(';','</FVALUE><FVALUE>')
      Add-Content -Path .\neueDatei.xml -Value $AngepassteZeile  
  }
  else
  {
    Add-Content -Path .\neueDatei.xml -Value $Zeile 
  }
}
0