paulschrei
Goto Top

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
bildschirmergebnis

Content-Key: 1128806129

Url: https://administrator.de/contentid/1128806129

Printed on: April 19, 2024 at 22:04 o'clock

Mitglied: 149062
Solution 149062 Aug 06, 2021 updated at 11:37:59 (UTC)
Goto Top
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 face-smile!

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
Member: PaulSchrei
PaulSchrei Aug 06, 2021 at 12:13:28 (UTC)
Goto Top
Vielen Dank evoplus, dass Du einem Anfänger geholfen hast.
Deine Lösung funktioniert und macht was sie soll, wenn ich auch das Script noch nicht ganz verstehe. Ich werde mich jedoch weiter einarbeiten. Vielen Dank nochmals
Member: AnkhMorpork
AnkhMorpork Aug 06, 2021 at 12:41:52 (UTC)
Goto Top
Mitglied: 149062
149062 Aug 06, 2021 updated at 14:12:08 (UTC)
Goto Top
Ich habe die Powershell 2.0 auf meinem Windows10 Rechner installiert.
Hä? Ich glaube da hast du dich ziemlich vertan face-smile. 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.
Member: PaulSchrei
PaulSchrei Aug 09, 2021 at 08:38:22 (UTC)
Goto Top
Zitat von @149062:

Ich habe die Powershell 2.0 auf meinem Windows10 Rechner installiert.
Hä? Ich glaube da hast du dich ziemlich vertan face-smile. 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.

Ja, da habe ich mich geirrt. Ich habe die Anzeige im System (siehe angehängtes Bild) falsch verstanden.
bild
Mitglied: 149062
149062 Aug 09, 2021 updated at 08:44:14 (UTC)
Goto Top
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!