Problem bei der Dateiverarbeitung mit PowerShell - Erstellen, Filtern, Vergleichen und Arbeiten im Text
Ich habe ein Problem bei einem PowerShell-Skript, das in und aus Dateien schreibt.
Hallo zusammen,
ich sitze momentan an einem Skript, dass Dateien auslesen, erstellen und vergleichen soll. Dabei soll auch in Dateien nach bestimmten Zeichen gesucht werden. Das funktioniert noch nicht ganz. Ich hoffe, ihr könnt mir weiterhelfen.
Zuerst sollen zwei Ursprungsdateien als Variablen festgelegt und ein Zielpfad angegeben werden:
Diese Dateien werden automatisch generiert, sind recht lang und enthalten viel Zeug, das unwichtig ist. Jedoch tritt immer die gleiche Zeichenfolge ("sn:") vor verschiedenen Namen auf. Die Namen möchte ich herausfiltern und in eine neue, übersichtlichere Datei schreiben:
In den Dateien steht dann natürlich vor den Namen in der jeder Zeile der Pfad und die Line sowie das "sn:", da Select-String mir diese Eigenschaften mit angibt. Ich möchte aber einfach eine Liste mit den Namen erstellen. Ich habe es schon mit -replace versucht, d.h. alles vor den Namen durch "nichts" ersetzen zu lassen. Das greift aber nicht, da in dem Pfad in jeder Zeile ja "/" zu finden sind.
Wie kann ich also bereits die Ausgabe formatieren, dass mir nur die Namen angezeigt werden? Da ich mit Select-String suche, erhalte ich ja MatchInfo-Objekte als Ausgabe, und die Eigenschaft "Line" jedes Objektes ist genau der Name. Kann ich den rausfiltern?
Information: Die geordneten Dateien will ich dann im nächsten Schritt vergleichen und eine letzte Datei erstellen, die nur Unterschiede zwischen den Inhalten enthält. Das soll aber erstmal nicht Thema sein.
Das ist eines meiner ersten Skripts, versuche mich also erst langsam. Deswegen erwartet nicht mehr als Grundwissen von mir. Ich möchte mir alles nach und nach erarbeiten.
Ich hoffe, mir kann jemand helfen!
Gruß Scriptex
Hallo zusammen,
ich sitze momentan an einem Skript, dass Dateien auslesen, erstellen und vergleichen soll. Dabei soll auch in Dateien nach bestimmten Zeichen gesucht werden. Das funktioniert noch nicht ganz. Ich hoffe, ihr könnt mir weiterhelfen.
Zuerst sollen zwei Ursprungsdateien als Variablen festgelegt und ein Zielpfad angegeben werden:
$dat1 = "C:\source\1.dat"
$dat2 = "C:\source\2.dat"
$destination = "C:\Users\User\Desktop\"
Diese Dateien werden automatisch generiert, sind recht lang und enthalten viel Zeug, das unwichtig ist. Jedoch tritt immer die gleiche Zeichenfolge ("sn:") vor verschiedenen Namen auf. Die Namen möchte ich herausfiltern und in eine neue, übersichtlichere Datei schreiben:
Get-ChildItem $dat1 | Select-String -pattern "sn:*" > "$destination\1_geordnet.txt"
Get-ChildItem $dat2 | Select-String -pattern "sn:*" > "$destination\2_geordnet.txt"
In den Dateien steht dann natürlich vor den Namen in der jeder Zeile der Pfad und die Line sowie das "sn:", da Select-String mir diese Eigenschaften mit angibt. Ich möchte aber einfach eine Liste mit den Namen erstellen. Ich habe es schon mit -replace versucht, d.h. alles vor den Namen durch "nichts" ersetzen zu lassen. Das greift aber nicht, da in dem Pfad in jeder Zeile ja "/" zu finden sind.
Wie kann ich also bereits die Ausgabe formatieren, dass mir nur die Namen angezeigt werden? Da ich mit Select-String suche, erhalte ich ja MatchInfo-Objekte als Ausgabe, und die Eigenschaft "Line" jedes Objektes ist genau der Name. Kann ich den rausfiltern?
Information: Die geordneten Dateien will ich dann im nächsten Schritt vergleichen und eine letzte Datei erstellen, die nur Unterschiede zwischen den Inhalten enthält. Das soll aber erstmal nicht Thema sein.
Das ist eines meiner ersten Skripts, versuche mich also erst langsam. Deswegen erwartet nicht mehr als Grundwissen von mir. Ich möchte mir alles nach und nach erarbeiten.
Ich hoffe, mir kann jemand helfen!
Gruß Scriptex
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180440
Url: https://administrator.de/contentid/180440
Ausgedruckt am: 05.11.2024 um 14:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo Scriptex und willkommen im Forum, hallo Connor1980!
Vielleicht hilft ja die Beschreibung hier ...
Als Batch sähe das übrigens so aus:
Grüße
bastla
Vielleicht hilft ja die Beschreibung hier ...
Als Batch sähe das übrigens so aus:
for /f "tokens=1* delims=:" %%i in ('findstr /b "sn:" "C:\source\1.dat"') do >>"C:\Users\User\Desktop\1_geordnet.txt" echo %%j
bastla