我在目录中有多个.mp3文件,并希望从文件名中删除艺术家的名字。 所有文件'名称包含字符串
" Adhesive Wombat - "
之后是歌曲的标题。 我想删除(不替换)当前文件夹中每个文件名中每个特定字符串的出现。
更不用说了,我已经在这个网站上搜索了答案,却未能找到一个优雅而令人满意的解决方案。
这是我第一次遇到PowerShell。
答案 0 :(得分:6)
如您所知,真的关闭。
Dir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
您添加了一条规定,“Adhesive Wombat”可能包含也可能不包含空格。 -replace
使用正则表达式,因此我们可以使用?
来使用正则表达式和make that space optional。我还将向您展示完整的cmdlet名称作为别名,以便您了解幕后发生的事情。很难看到,但我试图用粗体突出显示?
以使其“流行”。
Get-ChildItem | Rename-Item -NewName {$_.Name -replace "Adhesive ?Wombat - ", "" }
这样两者都匹配
"other text Adhesive Wombat - other text "
"other text AdhesiveWombat - other text "
此外,根据您有多少空白区域,您可以使用\s+
,其中您有空间可以匹配所有连续的空白区域。
答案 1 :(得分:0)
从上面的答案中,可以简单地复制并粘贴的快速示例适用于win 10 Powershell:
cd C:\....
Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"}
{{1}}