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

Powershell 修改重复重命名文件的脚本,powershell,Powershell,在PowerShell中使用下面的代码,我正在重命名许多图片。如何修改代码以管理重复项?注;许多照片具有相同的CreationTime值。当它们出现时,我需要将它们输出为: yyyyMMdd-HHmm-1 yyyyMMdd-HHmm-2 yyyyMMdd-HHmm-3 等等 脚本: Dir | Rename-Item -NewName {$_.CreationTime.toString("yyyyMMdd-HHmm") + ".jpg"} 向scriptblock添加更多内容以检查路径并循

在PowerShell中使用下面的代码,我正在重命名许多图片。如何修改代码以管理重复项?注;许多照片具有相同的CreationTime值。当它们出现时,我需要将它们输出为:

  • yyyyMMdd-HHmm-1
  • yyyyMMdd-HHmm-2
  • yyyyMMdd-HHmm-3
  • 等等
脚本:

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

向scriptblock添加更多内容以检查路径并循环,直到找到唯一的内容:

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:Ok,修复了无法在同一日期时间管理超过10个文件的问题

尝试此操作,但使用路径目录修改路径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  
     }
  }

Hi@TheMadTechnician-这导致了许多文件名,如20161010-1114-01-02-03-04-05。jpgIt看起来,当它有多个具有相同creationtime值的文件实例时,就会产生错误。这是它正在创建的文件名的图像。明白了。。。好的,这是正则表达式替换。一秒钟后,我就可以解决这个问题。仍然会出现大量错误,主要是“PathToolLongException”-下面是一个图像:如果您遇到PathToolLong错误,那么显然您需要缩短路径。这是windows的限制。我不知道你是如何得到这个结果的,这是没有意义的。我更新了答案,这样你就不会在这里结束了。