我有多个目录中的 .mp3 文件,想要从它们的文件名中删除艺术家的名称。
所有文件的名称都包含字符串
"Adhesive Wombat - "
后跟歌曲的标题。 我想在当前文件夹中的每个文件名中删除(而不是替换)该特定字符串的每个出现。
更不用说,我已经在这个网站上搜索答案,但没有找到一个优雅且令人满意的解决方案。
这是我第一次接触 PowerShell。
"Adhesive Wombat - "
后跟歌曲的标题。 我想在当前文件夹中的每个文件名中删除(而不是替换)该特定字符串的每个出现。
更不用说,我已经在这个网站上搜索答案,但没有找到一个优雅且令人满意的解决方案。
这是我第一次接触 PowerShell。
正如你所知道的,你拥有的东西是非常接近的。
Dir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
-replace
使用正则表达式,因此让我们利用它,使用?
使该空格可选。我还将向您展示完整的cmdlet名称,而不是别名,以便您了解幕后发生的情况。很难看到,但我试图用粗体突出显示?
,使其“突出”。
Get-ChildItem | Rename-Item -NewName {$_.Name -replace "Adhesive ?Wombat - ", "" }
那么这将匹配两个
"other text Adhesive Wombat - other text "
"other text AdhesiveWombat - other text "
\s+
代替空格,这将匹配所有连续的空白字符。从以上答案中,下面是一个简单的可复制粘贴的示例,适用于在win 10 Powershell上工作:
*.*
cd C:\....
Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"}
Get-ChildItem
和Rename-Item
... 或许你需要使用For-EachObject
- MattDir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
,但也有文件名中没有空格的情况,即"AdhesiveWombat"。我希望能够用一行清晰的代码同时删除这两种字符串,而不是分别执行两个命令。 - IndrasilDir | ren -NewName { $_.Name -replace "Adhesive ?Wombat - ", "" }
- CB.