2016-10-13 2 views
2

Mit dem unten stehenden Code in PowerShell umbenenne ich viele Bilder. Wie ändere ich den Code, um Duplikate zu verwalten? Hinweis; Viele der Fotos haben den gleichen CreationTime-Wert. Wie sie auftreten, muss ich sie als Ausgang sein:Skript für doppelt umbenannte Dateien ändern

  • yyyyMMdd-SSMM-1
  • yyyyMMdd-SSMM-2
  • yyyyMMdd-SSMM-3
  • usw.

Skript:

Antwort

0

Fügen Sie mehr zu Ihrem Skriptblock hinzu, um Pfade zu prüfen und durchzulaufen, bis ich t findet etwas Einmaliges:

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 
} 

Edit: Hm, ich bin nicht sicher, warum es tun würde, es sei denn du hast meinen Code rechts nicht kopieren. Ich lief es gegen einen Testordner und endete mit:

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, das Problem behoben, bei dem es nicht mehr als 10 einer Datei mit der gleichen Datumzeit verwalten kann.

+0

Hallo @TheMadTechnician - dies führte zu vielen Dateinamen wie 20161010-1114-01-02-03-04-05. jpg – RarelyRed

+0

Hinweis; Viele der Fotos haben den gleichen CreationTime-Wert. – RarelyRed

+0

Es sieht so aus, als wenn es mehr als Instanzen einer Datei mit demselben Creationtime-Wert hat, erstellt es den Fehler. Hier ist ein Bild der Dateinamen, die es erstellt. [link] (http://imgur.com/a/TvAqX) – RarelyRed

0

dies versuchen, aber den Pfad C ändern: \ temp mit Pfadverzeichnis

$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 
    } 
    } 
Verwandte Themen