当字符不总是相同时,如何通过删除文件名的一部分来重命名多个文件

当字符不总是相同时,如何通过删除文件名的一部分来重命名多个文件

我希望有人能指导我做我想做的事情。

我发现了一篇先前的文章,其中显示了以下 PowerShell 语句,该语句对我批量重命名一些文件非常有帮助。

get-childitem *.mp4 | foreach { rename-item $_ $_.Name.Replace("_Title1", "") }

这使我能够重命名特定文件夹中的所有文件,如下所示:

  • 电影 One_Title1.mp4
  • 电影二_标题1.mp4
  • 电影三_标题.mp4

重命名为以下内​​容:

  • 电影一.mp4
  • 电影二.mp4
  • 电影三.mp4

我想了解如何编辑上述语句,以便我能够捕获并重命名具有变化编号的文件,如下所示:

  • 电影四_Title12.mp4
  • 电影五_Title36.mp4
  • 电影六_Title49.mp4

可以重命名为:

  • 电影第四部.mp4
  • 电影五.mp4
  • 电影第六部.mp4

答案1

这个(未经测试的)命令应该使用正则表达式来执行此操作:

Get-ChildItem directory | Rename-Item -NewName { $_.Name -replace '_Title[0-9]+','' }

正则表达式的[0-9]*意思是:

  • [0-9]:任意数字。
  • +:前一个元素的一次或多次。
    您可以使用 来代替*,表示“零次或多次”,以去掉_Title没有数字的元素。

相关内容