Entfernen Sie Leerzeichen nach Dateierweiterungen in der TXT-Datei

Entfernen Sie Leerzeichen nach Dateierweiterungen in der TXT-Datei

Ich muss aus meiner List.txt alles nach der Dateierweiterung entfernen und dabei die Erweiterung beibehalten.

Ich habe erfolglos versucht, die Befehle in den Links zu verwenden:
So entfernen Sie mit Powershell Leerzeichen am Ende einer Zeile
Powershell-Trim – alle Zeichen nach einer Zeichenfolge entfernen

Aufführen:

05 - Earth Wind and Fire - September (The Reflex Revision).mp3                                   -9,6
06 - Electric Light Orchestra - Last Train To London (Bootleg Extended Dance Remix).flac         -9,1
08 - Kool & The Gang - Get Down On It (Soul Funk House Remix).wav                               -10,7

Was ich brauche:

05 - Earth Wind and Fire - September (The Reflex Revision).mp3  
06 - Electric Light Orchestra - Last Train To London (Bootleg Extended Dance Remix).flac
08 - Kool & The Gang - Get Down On It (Soul Funk House Remix).wav

Ich habe den Befehl ausprobiert, jedoch ohne Erfolg:

$content = Get-Content $files
$content | Foreach {$_.Substring(0, $_.IndexOf('.mp3', '.flac', '.wav' ))} | Set-Content $files

Wie entferne ich die Dateierweiterung und behalte dabei die Erweiterungen bei?

Antwort1

Basierend auf Ihren Beispieldaten scheint es der einfachste Ansatz zu sein, den konsistentesten Teil jeder Zeichenfolge, die Leerzeichen und Zahlen nach dem Dateinamen, abzugleichen:

  • <WhiteSpace><MinusSign><OneOrMoreDigits><Comma><OneOrMoreDigits>

Verwendung einerregulären Ausdruck:

  • '\s+\-\d+,\d+$'

mit dem-ReplaceOperator, der einfach den übereinstimmenden Text entfernt, wenn keine Ersetzungszeichenfolge angegeben ist:

    { $_ -replace '\s+\-\d+,\d+$' }

Wenn das Minuszeichen optional ist, geben Sie anschließend den One or none (?)Quantifizierer ein:

    $_ -replace '\s+\-?\d+,\d+$'

verwandte Informationen