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-Replace
Operator, 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+$'