Powershell: Zeilen aus Textdatei verändern und in neue Datei schreiben
Mit dem Powershell Script sollen aus einer vorhandenen textdatei die zeilen ausgelesen und in eine neue textdatei geschrieben werden.
Dabei sollen in die neue textdatei nur zeilen geschrieben werden, die mit einer vorgegebenen Ziffern-/Zahlenreihenfolge beginnen.
Gleichzeitig sollen die Zeilen um 6 Stellen am Anfang der zeile gekürzt werden.
Das Script gibt zwar das richtige Ergebnis auf dem Bildschirm aus, schreibt dies aber nicht in die neue textdatei.
Darüberhinaus wird ein fehler angezeigt. Offensichtlich wird das Script nicht korrekt beendet.
Ich hoffe mir kann jemand weiter helfen.
Ich habe die Powershell 2.0 auf meinem Windows10 Rechner installiert.
###---------------------------------------------
$eingabe = "A2P71U"
$datei = Get-Content -path test.txt
Foreach($line in $datei){
if($line.StartsWith("$eingabe")){
$line.Remove(0,6)
}
}
set-content -path testneu.txt
###-------------------------------------------------
Das Ergebnis auf dem Bildschirm habe ich angehängt
Dabei sollen in die neue textdatei nur zeilen geschrieben werden, die mit einer vorgegebenen Ziffern-/Zahlenreihenfolge beginnen.
Gleichzeitig sollen die Zeilen um 6 Stellen am Anfang der zeile gekürzt werden.
Das Script gibt zwar das richtige Ergebnis auf dem Bildschirm aus, schreibt dies aber nicht in die neue textdatei.
Darüberhinaus wird ein fehler angezeigt. Offensichtlich wird das Script nicht korrekt beendet.
Ich hoffe mir kann jemand weiter helfen.
Ich habe die Powershell 2.0 auf meinem Windows10 Rechner installiert.
###---------------------------------------------
$eingabe = "A2P71U"
$datei = Get-Content -path test.txt
Foreach($line in $datei){
if($line.StartsWith("$eingabe")){
$line.Remove(0,6)
}
}
set-content -path testneu.txt
###-------------------------------------------------
Das Ergebnis auf dem Bildschirm habe ich angehängt
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1128806129
Url: https://administrator.de/contentid/1128806129
Ausgedruckt am: 04.12.2024 um 19:12 Uhr
6 Kommentare
Neuester Kommentar
Das Script gibt zwar das richtige Ergebnis auf dem Bildschirm aus, schreibt dies aber nicht in die neue textdatei.
Du übergibst das Ergebnis ja nicht per Pipeline (|) an Set-Content ... Deswegen kommt die Eingabeaufforderung was an Set-Content übergeben werden soll, die PS weiß es ja nicht wenn du es ihr nicht sagst !Ich würd das ganze Gedöhns so direkt mit Select-String machen
Select-String -Path test.txt -Pattern "^A2P71U" | %{$_.Line.substring(6)} | Set-Content -Path testneu.txt
/evo
Ich habe die Powershell 2.0 auf meinem Windows10 Rechner installiert.
Hä? Ich glaube da hast du dich ziemlich vertan . Windows 10 hat per Default die Major PS Version 5 installiert. Aktuell ist dazu wie @AnkhMorpork PS Major 7, diese muss jedoch vom Anwender explizit installiert werden.Powershell 2.0 kann man unter Windows 10 nur simulieren wenn an die PS Konsole explizit mit dem -Version 2.0 Parameter startet.
$psversiontable
zeigt dir die aktuell verwendete Version.Zitat von @PaulSchrei:
Ja, da habe ich mich geirrt. Ich habe die Anzeige im System (siehe angehängtes Bild) falsch verstanden.
Kann man natürlich für alte inkompatible Skripte machen, macht hier aber keinen Sinn denn per Default ist ja die PS 5 installiert, dieser Eintrag installiert nur zusätzlich die alte Version 2.0 wenn man sie denn überhaupt noch braucht!Ja, da habe ich mich geirrt. Ich habe die Anzeige im System (siehe angehängtes Bild) falsch verstanden.