我有一长串文件,这些文件都以“yyyyMMdd”格式结束日期,需要将它们更改为“MMM-yy”。什么是最好的解决方法?
例如'file_one_20120620.pdf'> 'file_one_JUN-12.pdf'
Joey在下面提出了一个Powershell脚本,它看起来应该可以工作,但即使在改变提供的代码时,我也会一直打墙。任何帮助都会很棒,谢谢!
答案 0 :(得分:4)
您可以使用PowerShell执行此操作:
gci | # get files
foreach {
$newName = [Regex]::Replace($_.BaseName, '\d{8}$', {
param($m)
[datetime]::ParseExact($m.Value, 'yyyyMMdd', $null).ToString('dd-MMM')
}) + $_.Extension
Rename-Item $_ $newName
}
答案 1 :(得分:1)
Get-ChildItem | # get files
foreach {
$newName = [Regex]::Replace($_.BaseName, '\d{8}$', {
param($m)
[datetime]::ParseExact($m.Value, 'yyyyMMdd', $null).ToString('dd-MMM')
}) + $_.Extension
Rename-Item $_ $newName -WhatIf
$_
$newname
}
这与我的测试列表一起工作我所做的就是将gci更改为get-childItem ..
如果:在目标“项目:C:\ ab \ file_four_20120701.txt目的地:C:\ ab \ file_four_01-Jul.txt”上执行“重命名文件”操作。
如果:在目标“项目:C:\ ab \ file_one_20120620.txt目的地:C:\ ab \ file_one_20-Jun.txt”上执行“重命名文件”操作。
如果:在目标“项目:C:\ ab \ file_three_20120622.txt目的地:C:\ ab \ file_three_22-Jun.txt”上执行“重命名文件”操作。
如果:在目标“项目:C:\ ab \ file_two_20120621.txt目的地:C:\ ab \ file_two_21-Jun.txt”上执行“重命名文件”操作。
答案 2 :(得分:0)
这可以解决我的问题,感谢上面的Joey。
基于以下文件命名约定:
'file_one_20120622.pdf'转换为'file_one_JUN-22.pdf'
gci | #get files
foreach {
$newDate = [DateTime]::ParseExact($_.Name.Split('_')[2].Split('.')[0],'yyyyMMdd',$null).ToString('MMM-yy').ToUpper()
$newFilename = $_.Name.Split('_')[0] + '_' + $_.Name.Split('_')[1] + '_' + $newDate + ".pdf"
Rename-Item $_ $newFilename -WhatIf
}