Удалить пробелы после расширений файлов в текстовом файле

Удалить пробелы после расширений файлов в текстовом файле

Мне нужно удалить из моего List.txt все, что находится после расширения файла, сохранив расширение.

Я безуспешно пытался использовать команды в ссылках:
как-использовать-powershell-для-удаления-пробелов-из-конца-строки
powershell-trim-удалить-все-символы-после-строки

Список:

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

Что мне нужно:

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

Я попробовал команду, но безуспешно:

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

Как удалить расширение файла, сохранив расширения?

решение1

На основе вашего образца данных, по-видимому, самым простым подходом будет сопоставление наиболее последовательной части каждой строки, пробелов и цифр, следующих за именем файла:

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

используярегулярное выражение:

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

с-Replaceоператор, который просто удалит соответствующий текст, если строка замены не указана:

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

Если знак минус необязателен, после него следует квантификатор One or none (?):

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

Связанный контент