我有一长串文件,它们都以“yyyyMMdd”格式的日期结尾,需要将它们更改为“MMM-yy”。解决这个问题的最佳方法是什么?
例如“file_one_20120620.pdf”>“file_one_JUN-12.pdf”
- 使用正则表达式查找“日期”
- 提取和操作日期
- 重新命名文件
Joey 在下面建议了一个 Powershell 脚本,它看起来应该可以工作,但我一直在碰壁,即使在更改提供的代码时也是如此。任何帮助都会很棒,谢谢!
我有一长串文件,它们都以“yyyyMMdd”格式的日期结尾,需要将它们更改为“MMM-yy”。解决这个问题的最佳方法是什么?
例如“file_one_20120620.pdf”>“file_one_JUN-12.pdf”
Joey 在下面建议了一个 Powershell 脚本,它看起来应该可以工作,但我一直在碰壁,即使在更改提供的代码时也是如此。任何帮助都会很棒,谢谢!
您可以使用 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
}
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”执行“重命名文件”操作。
多亏了上面的乔伊,这对我的情况很有帮助。
基于以下文件命名约定:
'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
}