修改重复重命名文件的脚本

时间:2016-10-13 16:50:30

标签: powershell

在PowerShell中使用以下代码,我重命名了许多图片。如何修改代码以管理重复项?注意;许多照片都具有SAME CreationTime值。当它们发生时,我需要将它们输出为:

  • YYYYMMDD-HHMM-1
  • YYYYMMDD-HHMM-2
  • YYYYMMDD-HHMM-3

脚本:

Dir | Rename-Item -NewName {$_.CreationTime.toString("yyyyMMdd-HHmm") + ".jpg"}

2 个答案:

答案 0 :(得分:0)

在脚本块中添加更多内容以检查路径并循环直至找到独特的内容:

Dir | Rename-Item -NewName {
    $NewName=$_.CreationTime.toString("yyyyMMdd-HHmm") + ".jpg";
    $i=1
    While(Test-Path ".\$NewName"){
        $NewName=$_.CreationTime.toString("yyyyMMdd-HHmm") + "-$i.jpg"
        $i++
    }
    $NewName
}

编辑:嗯,我不知道为什么会这样做,除非你没有正确复制我的代码。我在一个测试文件夹上运行它,结果是:

PS C:\temp\test> gci


Directory: C:\temp\test


Mode                LastWriteTime         Length Name                                                                                                         
----                -------------         ------ ----                                                                                                         
-a----       10/12/2016  11:13 AM       35228885 20161012-1113.jpg                                                                                            
-a----       10/12/2016  11:28 AM       31413221 20161012-1128.jpg                                                                                            
-a----       10/12/2016  11:37 AM       33243498 20161012-1137.jpg                                                                                            
-a----       10/12/2016   4:42 PM        2110424 20161012-1642-1.jpg                                                                                          
-a----       10/12/2016   4:42 PM        3300892 20161012-1642-2.jpg                                                                                          
-a----       10/12/2016   4:42 PM        3295345 20161012-1642-3.jpg                                                                                          
-a----       10/12/2016   4:42 PM      101138881 20161012-1642.jpg    

Edit2:好的,修复了无法管理10个以上相同日期时间的文件的问题。

答案 1 :(得分:0)

试试这个,但用你的路径目录修改路径C:\ temp

  $listcouple=gci -File -Path "C:\temp" | select name, fullname, @{Name="Datstring";Expression={$_.CreationTime.toString("yyyyMMdd-HHmm") }} | group Datstring 

  foreach ($item in $listcouple)
  {
     if ($item.Count -gt 1)
     {
         $compteur=0 
         foreach ($value in $item.Group)
         {
            $compteur++
            $newname= $value.Datstring + "-" + $compteur.ToString() + ".jpg"
            Rename-Item -path  $value.fullname -newname    $newname 
         }
     }
     else
     {
        $newname= $item.Group[0].Datstring + ".jpg"
        Rename-Item -path  $item.Group[0].fullname -newname    $newname  
     }
  }