如何在PowerShell中拆分字符串和重命名文件?

时间:2016-05-12 21:15:18

标签: powershell

我想批量重命名我文件夹中的文件,并且所有文件的格式都为FilenameYeara\b.pdf,例如TestData2001a.pdfFile2015b.pdf。我想将所有内容重命名为[Yeara\b]Filename,例如[2001a]TestData。问题是我不知道如何将文件名分成两部分(如果我们计算扩展名为.pdf部分,实际上是三部分),这样我就把第二部分作为文件名的第一部分。

Get-ChildItem | Rename-Item {$_.name -replace ‘current’, ’old’ } 

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

正则表达式匹配" 任何东西,四位数,一个字符,.pdf "并将其替换为新订单中的那些项目。

PS D:\t> gci | ren -newname { $_ -replace '(.*)(\d{4})(.)\.pdf', '[$2$3]$1.pdf' }

    Directory: D:\t

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        13/05/2016     02:54          0 File2015b.pdf
-a---        13/05/2016     02:53          0 TestData2001a.pdf

成为

    Directory: D:\t

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        13/05/2016     02:53          0 [2001a]TestData.pdf
-a---        13/05/2016     02:54          0 [2015b]File.pdf

(也许在运行真实之前用-Whatif尝试)

答案 1 :(得分:0)

这应该让你入门

$Matches.Clear()
Get-Item | % {
   $_.BaseName -match "(\D+)([0-9]{4}[ab])"
   Rename-Item -Path $_.FullName -NewName "$($Matches[2])$($Matches[1])$($_.Extension)"
}