none
Zeile suchen, Zeile anpassen und Zeile speichern RRS feed

  • Frage

  • Hi,

    ich stehe im Moment auf dem Schlauch. Weiß einfach nicht mehr weiter. Also ich habe eine Datei diese beinhaltet 19 Zeilen, davon relevant sind 15 Zeilen. Jede Relevante Zeile hat ein bestimmten String wonach ich suchen kann, damit ich die Zeile auch identifizieren kann.

    Mit diesen Code kann ich nach der Bestimmten Zeile suchen:

    foreach($zeile IN Get-Content "myPath")
    {
    if($zeile | Where-Object { $_.Contains("Suche")})
    { 
    $logZeile = $logZeile + " - Die Zeile soll geändert werden!"
    Write-Host "$logZeile" 
    }   
    }

    Doch wie kann ich nun die veränderte Zeile in die schon bestehende txt-Datei zurück speichern?

    Danke für die Hilfe

    Liebe Grüße

    Montag, 22. Februar 2016 10:05

Antworten

  • Hallo,

    das kannst Du auf diverse Arten machen, z.B.: so. Im Beispiel stehen in der Datei zzz.txt pro Zeile ein Grossbuchstabe der dann jeweils in seinen ASCII-ert gewandelt wird und die Datei dann mit den ASCII-Werten zurueck geschrieben wird.

    $Datei = Get-Content .\zzz.txt
    $i = 0
    foreach ($Zeile in $Datei) {
    	$Datei[$i] = [byte][char]"$Zeile"
    	$i++
    }
    $Datei | Set-content -path .\zzz.txt

    Du musst also nur den foreach Teil auf deine Wünsche anpassen.

    Beste Gruesse
    brima

    • Als Antwort markiert Styler_05 Montag, 22. Februar 2016 11:15
    Montag, 22. Februar 2016 10:42

Alle Antworten

  • Hallo,

    das kannst Du auf diverse Arten machen, z.B.: so. Im Beispiel stehen in der Datei zzz.txt pro Zeile ein Grossbuchstabe der dann jeweils in seinen ASCII-ert gewandelt wird und die Datei dann mit den ASCII-Werten zurueck geschrieben wird.

    $Datei = Get-Content .\zzz.txt
    $i = 0
    foreach ($Zeile in $Datei) {
    	$Datei[$i] = [byte][char]"$Zeile"
    	$i++
    }
    $Datei | Set-content -path .\zzz.txt

    Du musst also nur den foreach Teil auf deine Wünsche anpassen.

    Beste Gruesse
    brima

    • Als Antwort markiert Styler_05 Montag, 22. Februar 2016 11:15
    Montag, 22. Februar 2016 10:42
  • Hi,

    Danke für die Antwort.

    Ich habe das jetzt mal so wie du es mir gezeigt hast versucht, hier mal mein Kompletter Code:

    $LocalFile = Get-Content "MyPath"
    $row = 0
    foreach($zeile IN $LocalFile )
    {
        $LocalFile[$row] = "$zeile - New Text: 12"
        $row++
    }
    $LocalFile | Set-content -path "$LocalFile"

    Wenn ich das [Byte][char] wie du lasse, kommt es zu einer Fehlermeldung! -> Das er nur ein Zeichen haben möchte. Und wenn ich das so laufen lasse wie ich kommt die Fehlermeldung, dass das Laufwerk "Name der Datei" nicht gefunden wurde. Warum nimmt der den Namen der Datei als Laufwerk???

    Liebe Grüße

    PS.:Ahh hatte ein Denkfehler! Hast recht mit deinem Beispiel funktioniert es wunderbar. Danke!

    • Bearbeitet Styler_05 Montag, 22. Februar 2016 11:15 Geschafft
    Montag, 22. Februar 2016 11:00
  • Hi,

    den [byte] Kram brauchst du auch nicht .... war nur für mein Beipsiel, in derletzten Zeile musst du $localfile (den ganz rechts)  durche einen Dateinamen/Pafad ersetzen denn dort steht ja der Inhalt der Datei drin.

    Beste Gruesse
    brima

    Montag, 22. Februar 2016 11:08