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

问题描述 投票:0回答:2

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

“胶粘袋熊-”

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

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

这是我第一次接触PowerShell。

string powershell replace filenames
2个回答
6
投票

您所知道的是真的关闭。

Dir | ren -NewName { $_.Name -replace "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+,那里的空白会匹配所有连续的空白。


0
投票

从以上答案中,可以简单地复制并粘贴的快速工作示例,该示例适用于Win 10 Powershell:

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