PowerShell - 从多个文件名中删除某些字符串

Ind*_*sil 2 string powershell filenames replace

我在目录中有多个.mp3文件,并希望从文件名中删除艺术家的名字.所有文件的名称都包含字符串

"粘性袋熊 - "

之后是歌曲的标题.我想删除(不替换)当前文件夹中每个文件名中每个特定字符串的出现.

更不用说了,我在这个网站上搜索了答案,却未能找到一个优雅而令人满意的解决方案.

这是我第一次遇到PowerShell.

Mat*_*att 8

如你所知,你所拥有的非常接近.

Dir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
Run Code Online (Sandbox Code Playgroud)

您添加了一个规定,即"Adhesive Wombat"可能包含也可能不包含空格.-replace使用正则表达式,从而使利用这一点,使该空间可选择使用?.我还将向您展示完整的cmdlet名称作为别名,以便您了解幕后发生的事情.这很难看,但我试图?用粗体突出显示它"流行".

Get-ChildItem | Rename-Item -NewName {$_.Name -replace "Adhesive ?Wombat - ", "" }

这样两者都匹配

"other text Adhesive Wombat - other text "
"other text AdhesiveWombat - other text "
Run Code Online (Sandbox Code Playgroud)

此外,根据\s+您有多少空白区域,您可以使用具有匹配所有连续空白区域的空间.