PowerShell - 从多个文件名中删除特定字符串
PowerShell - Remove certain string from multiple filenames
我的目录中有多个 .mp3 文件,想从文件名中删除艺术家的名字。
所有文件的名称都包含字符串
"Adhesive Wombat - "
后面是歌曲的标题。
我想删除(而不是替换)当前文件夹中每个文件名中该特定字符串的每次出现。
更不用说,我已经在此站点上搜索了答案,但未能找到优雅且令人满意的解决方案。
这是我第一次接触 PowerShell。
如您所知,您所拥有的确实接近。
Dir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
您添加了一项规定,即 "Adhesive Wombat" 可能包含也可能不包含 space。 -replace
使用正则表达式,所以让我们利用它和 make that space optional 使用 ?
。我还将向您展示应该作为别名的完整 cmdlet 名称,以便您了解幕后发生的事情。很难看到,但我试图用粗体突出显示 ?
,以便 "pop"。
获取子项 |重命名项目 -NewName {$_.Name -replace "Adhesive <b>?</b>Wombat - ", "" }
所以这将匹配两者
"other text Adhesive Wombat - other text "
"other text AdhesiveWombat - other text "
此外,根据有多少白色 space,你可以在你有 space 的地方使用 \s+
,这将匹配所有连续的白色 space.
根据以上答案,简单复制和粘贴的快速工作示例适用于 win 10 Powershell:
- 将目录更改为目标目录
- 定义文件,例如*.txt 或设置所有文件
*.*
- 插入您的字符串以进行替换
cd C:\....
Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"}
我的目录中有多个 .mp3 文件,想从文件名中删除艺术家的名字。 所有文件的名称都包含字符串
"Adhesive Wombat - "
后面是歌曲的标题。 我想删除(而不是替换)当前文件夹中每个文件名中该特定字符串的每次出现。
更不用说,我已经在此站点上搜索了答案,但未能找到优雅且令人满意的解决方案。
这是我第一次接触 PowerShell。
如您所知,您所拥有的确实接近。
Dir | ren -NewName { $_.Name -replace "Adhesive Wombat - ", "" }
您添加了一项规定,即 "Adhesive Wombat" 可能包含也可能不包含 space。 -replace
使用正则表达式,所以让我们利用它和 make that space optional 使用 ?
。我还将向您展示应该作为别名的完整 cmdlet 名称,以便您了解幕后发生的事情。很难看到,但我试图用粗体突出显示 ?
,以便 "pop"。
获取子项 |重命名项目 -NewName {$_.Name -replace "Adhesive <b>?</b>Wombat - ", "" }
所以这将匹配两者
"other text Adhesive Wombat - other text "
"other text AdhesiveWombat - other text "
此外,根据有多少白色 space,你可以在你有 space 的地方使用 \s+
,这将匹配所有连续的白色 space.
根据以上答案,简单复制和粘贴的快速工作示例适用于 win 10 Powershell:
- 将目录更改为目标目录
- 定义文件,例如*.txt 或设置所有文件
*.*
- 插入您的字符串以进行替换
cd C:\.... Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"}