删除txt文件中文件扩展名后的空格

删除txt文件中文件扩展名后的空格

我需要从我的 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+$'

相关内容