我想批量重命名我文件夹中的文件,并且所有文件的格式都为FilenameYeara\b.pdf
,例如TestData2001a.pdf
,File2015b.pdf
。我想将所有内容重命名为[Yeara\b]Filename
,例如[2001a]TestData
。问题是我不知道如何将文件名分成两部分(如果我们计算扩展名为.pdf部分,实际上是三部分),这样我就把第二部分作为文件名的第一部分。
Get-ChildItem | Rename-Item {$_.name -replace ‘current’, ’old’ }
我怎样才能做到这一点?
答案 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)"
}