首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过重新排列文件名在目录中重命名文件

通过重新排列文件名在目录中重命名文件
EN

Stack Overflow用户
提问于 2014-01-14 16:43:50
回答 2查看 1.1K关注 0票数 0

在具有这种命名约定的目录中,我有大量文件:"Date 345.pdf“。注: 345对于所有的人来说都是常数。

我想重命名所有的文件,以便他们读"Lastname 345.pdf“。

编辑:我最初在那里有一个错误。

我在以下方面取得了一些成功:

代码语言:javascript
复制
gci -Filter *.pdf| %{Rename-Item $_.fullname $_.Name.Split(" ")[1]}

但这只给了我"Date.pdf“。基本上,我不知道如何使用上面的命令组合拆分的两个不同部分。我基本上想要“1.2.pdf”,如果这有任何意义的话。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-14 18:36:30

另一种方法是使用正则表达式:

代码语言:javascript
复制
Get-ChildItem *.pdf | % {
  $newName = $_.Name -replace '^(.*) (\S+) (\S+\.pdf)$', '$2 $1 $3'
  Rename-Item $_ $newName
}

正则表达式细分:

  • ^(.*)匹配字符串开头的任意数量的字符,并在组中捕获它们。[Date]在您的示例文件名[Date] [Lastname] 345.pdf中。
  • (\S+)匹配一个或多个连续的非空白字符,并在第二个组中捕获它们。[Lastname]在您的示例文件名[Date] [Lastname] 345.pdf中。
  • (\S+\.pdf)$匹配一个或多个连续的非空格字符,然后匹配字符串末尾的字符串.pdf,并在第三个组中捕获该字符。345.pdf在您的示例文件名[Date] [Lastname] 345.pdf中。

这些组由$1$2$3引用,因此替换字符串'$2 $1 $3'按照您想要的方式重新排序组。

票数 1
EN

Stack Overflow用户

发布于 2014-01-14 16:48:53

试试看。

代码语言:javascript
复制
gci *.pdf| %{
    $Name = $PSItem.Name.Split(' ');
    $Dest = ('{0} {1} {2}' -f $Name[1], $Name[0], $Name[2]);
    Move-Item $PSItem.FullName -Destination $Dest;
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21118970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档