elgotto
Goto Top

Mit PS txt lesen und teile der Zeile auf Existenz prüfen

Moin in die Runde,

ich habe folgendes vor und hoffe, dass ihr mir helfen könnt.
Ich möchte per Powershell eine txt-Datei auslesen und die darin vorkommenden Dateipfade überprüfen lassen, ob diese vorhanden sind.

Das File sieht so aus:
O ItemType Kram
O ImportTasks Duration
06:20:00 B 20
06:20:00 F Z:\Ordner1\Ordner2\Zeug\JNGL.mp3 "Angezeigter Name1" ""
06:20:00 F Z:\Ordner1\Ordner2\Zeug\M-186.mp3 "Alles ganz toll" "Firma XY"
06:20:00 F Z:\Ordner1\Ordner2\Zeug\K-36.mp3 "Wow mega" "Firma ZG"
06:30:00 B 30
06:30:00 F Z:\Ordner1\Ordner2\Zeug\JNGL.mp3 "Werbe-Kennung" "PRS"
06:30:00 F Z:\Ordner1\Ordner2\Zeug\M-296.mp3 "SL A" "Düdeldü"


Ziel soll es also sein, dass die PS die einzelnen Pfade nimmt und prüft, ob die Datei vorhanden ist.

Content-ID: 3830414126

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

Ausgedruckt am: 19.11.2024 um 22:11 Uhr

3803037559
3803037559 03.09.2022 aktualisiert um 12:12:44 Uhr
Goto Top
Moin Moin, lieber Herr Gesangsverein.
$file = "f:\datei.txt"  
Select-String $file -Pattern 'F\s+(.*?)\s+"' | ?{!(Test-Path $_.matches.Groups[1].Value)} | select Linenumber, @{n='Path';e={$_.matches.Groups[1].Value}}  
Zeigt die Zeilennummern und den Pfad an für die die nicht existieren.

Cheers
certguy
ElGotto
ElGotto 03.09.2022 um 12:17:47 Uhr
Goto Top
Meinen verbindlichsten Dank face-smile
Eine kleine Zusatzfrage meinerseits. Ist es möglich nur den Namen des Files sich ausgeben zu lassen, also beispielsweise M-296.mp3 und das dann auch nur einmal, selbst wenn es doppelt vorkommt?
3803037559
Lösung 3803037559 03.09.2022 aktualisiert um 12:27:07 Uhr
Goto Top
Zitat von @ElGotto:

Meinen verbindlichsten Dank face-smile
Eine kleine Zusatzfrage meinerseits. Ist es möglich nur den Namen des Files sich ausgeben zu lassen, also beispielsweise M-296.mp3 und das dann auch nur einmal, selbst wenn es doppelt vorkommt?

Ja.
$file = "f:\datei.txt"  
Select-String $file -Pattern 'F\s+(.*?)\s+"' | ?{!(Test-Path $_.matches.Groups[1].Value)} | %{split-path $_.matches.Groups[1].Value -Leaf} | select -Unique