none
Replace Powershell RRS feed

  • Frage

  • Ich versuche eine txt dateien mit Powershell zu verändern und zwar muss folgendes verändert werden

    1. Am ende jeder Zeile brfindet sich ein " ; " und das muss weg

    2. die Erste Zeile soll gelöscht werden

    bisher habe ich nur das hier


    $Quelle="U:\Documents\DATEI.txt"
    $Ziel="U:\Documents\DATEI.neu.txt"
    $Datei = Get-ChildItem $Quelle
    foreach ($String in $Datei)
    {

    $Inhalt = Get-Content -Path $String


    $Inhalt | foreach {$_ -replace ";"," "}| Out-File -FilePath $Ziel -encoding Default
    }

    Das problem ist es verändert alle Smikolons.

    Und wie man die erste Zeile löscht weis ich absolut nicht

    Vielen Dank für eure hilfe

    Montag, 27. Juni 2011 13:49

Antworten

  • Hi Thomas,

    1. Am ende jeder Zeile brfindet sich ein " ; " und das muss weg

    bisher habe ich nur das hier

    $Inhalt | foreach {$_ -replace ";"," "}| Out-File -FilePath $Ziel -encoding Default
    }

    Mit TrimEnd kannst du das Symokolon einfach löschen:
    $Datei = Get-Content $Quelle|Foreach-Object {$_.TrimEnd(';')| Out-File -FilePath $Ziel}

    hier ist mal ein Beispiel:
    http://www.youdidwhatwithtsql.com/trimming-whitespace-with-powershell/388

    2. die Erste Zeile soll gelöscht werden

    Zum Löschen der ersten Zeile probier mal:
    get-content $file |
       select -Skip 1 |
       set-content "$file-temp"
    move "$file-temp" $file -Force

    siehe:
    http://stackoverflow.com/questions/2074271/remove-top-line-of-text-file-with-powershell


    Viele Grüße
    Christian

    Montag, 27. Juni 2011 15:46
  • Hi Thomas86,

    speicher dir den Inhalt als *.ps1 und ruf die Datei in der powershell auf:

    $Quelle="d:\test.txt"
    $Ziel="d:\testneu.txt"
    $Datei = Get-Content $Quelle

    Get-Content $Quelle| foreach-object {$_.TrimEnd(';')| Out-File -FilePath $Ziel -append}

    get-content $ziel | select -Skip 1 | set-content "$ziel-temp"
    move "$ziel-temp" $ziel -Force


    Viele Grüße
    Christian

    • Als Antwort markiert Thomas86 Mittwoch, 29. Juni 2011 09:07
    Montag, 27. Juni 2011 17:40

Alle Antworten

  • Hi Thomas,

    1. Am ende jeder Zeile brfindet sich ein " ; " und das muss weg

    bisher habe ich nur das hier

    $Inhalt | foreach {$_ -replace ";"," "}| Out-File -FilePath $Ziel -encoding Default
    }

    Mit TrimEnd kannst du das Symokolon einfach löschen:
    $Datei = Get-Content $Quelle|Foreach-Object {$_.TrimEnd(';')| Out-File -FilePath $Ziel}

    hier ist mal ein Beispiel:
    http://www.youdidwhatwithtsql.com/trimming-whitespace-with-powershell/388

    2. die Erste Zeile soll gelöscht werden

    Zum Löschen der ersten Zeile probier mal:
    get-content $file |
       select -Skip 1 |
       set-content "$file-temp"
    move "$file-temp" $file -Force

    siehe:
    http://stackoverflow.com/questions/2074271/remove-top-line-of-text-file-with-powershell


    Viele Grüße
    Christian

    Montag, 27. Juni 2011 15:46
  •  

    Zu 1.

    Ich hab deine Zeile Jetzt so eingefügt, allerdings löschte er alles bis auf die erste Zeile, wo liegt mein Fehler

    $Quelle="U:\Documents\PRDO.helaba_Fallback_out.txt"
    $Ziel="U:\Documents\PRDO.helaba_Fallback_out_kon.txt"
    $Datei = Get-ChildItem $Quelle

    foreach ($String in $Datei)
    {
    $Datei = Get-Content $Quelle|Foreach-Object {$_.TrimEnd(';')| Out-File -FilePath $Ziel}
    }

    Zu. 2

    Wie kann ich es einfügen, so dass es in einem Process erledigt wäre.

    ps. ich arbeite heute zum erstmal mit powershell :)

    Montag, 27. Juni 2011 16:23
  • Hi Thomas86,

    speicher dir den Inhalt als *.ps1 und ruf die Datei in der powershell auf:

    $Quelle="d:\test.txt"
    $Ziel="d:\testneu.txt"
    $Datei = Get-Content $Quelle

    Get-Content $Quelle| foreach-object {$_.TrimEnd(';')| Out-File -FilePath $Ziel -append}

    get-content $ziel | select -Skip 1 | set-content "$ziel-temp"
    move "$ziel-temp" $ziel -Force


    Viele Grüße
    Christian

    • Als Antwort markiert Thomas86 Mittwoch, 29. Juni 2011 09:07
    Montag, 27. Juni 2011 17:40