Мне нужно удалить из моего 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+$'