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

时间:2015-03-16 12:41:57

标签: string powershell replace filenames

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

  

" Adhesive Wombat - "

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

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

这是我第一次遇到PowerShell。

2 个答案:

答案 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:

  1. 将目录更改为目标目录
  2. 定义文件,例如* .txt或使用cd C:\.... Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"}
  3. 设置所有文件
  4. 插入您的字符串进行替换
{{1}}