繁体   English   中英

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

[英]PowerShell - Remove certain string from multiple filenames

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

“胶袋熊-”

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

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

这是我第一次接触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:

  1. 将目录更改为您的目标目录
  2. 用* .txt或每个文件获取文件
  3. 插入字符串进行替换
 cd C:\\.... Get-ChildItem *.* | Rename-Item -NewName {$_.Name -replace "StringtoReplace", "newString"} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM