1

我有一长串文件,它们都以“yyyyMMdd”格式的日期结尾,需要将它们更改为“MMM-yy”。解决这个问题的最佳方法是什么?

例如“file_one_20120620.pdf”>“file_one_JUN-12.pdf”

  1. 使用正则表达式查找“​​日期”
  2. 提取和操作日期
  3. 重新命名文件

Joey 在下面建议了一个 Powershell 脚本,它看起来应该可以工作,但我一直在碰壁,即使在更改提供的代码时也是如此。任何帮助都会很棒,谢谢!

4

3 回答 3

5

您可以使用 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
  }
于 2012-06-20T06:43:39.837 回答
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”执行“重命名文件”操作。

于 2012-07-02T06:33:51.397 回答
0

多亏了上面的乔伊,这对我的情况很有帮助。

基于以下文件命名约定:

'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
  }
于 2012-07-02T06:34:46.083 回答