2016-10-13 14 views
2

PowerShellで以下のコードを使用して、多くの画像の名前を変更しています。重複を管理するコードを変更するにはどうすればよいですか?注意;写真の多くにSAME CreationTimeの値があります。名前が変更されたファイルを複製するためのスクリプトを変更します。

  • YYYYMMDD-HHMM-1
  • YYYYMMDD-HHMM-2
  • YYYYMMDD-HHMM-3
  • など

:それらが発生したように、私は彼らのように出力する必要がスクリプト:

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

答えて

0

スクリプトブロックにパスを追加して、 tはユニークなものを見つけた:

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以上を管理することができない問題を修正しました。

+0

こんにちは@TheMadTechnicianと\ tempには - これは20161010-1114-01-02-03-04-05ような多くのファイル名になりました。 jpg – RarelyRed

+0

注:写真の多くにSAME CreationTimeの値があります。 – RarelyRed

+0

同じcreationtime値を持つファイルのインスタンス以上のものがある場合は、エラーが発生するようです。ここに、作成しているファイル名のイメージがあります。 [link](http://imgur.com/a/TvAqX) – RarelyRed

0

これを試してみたが、パスCを修正:あなたのパスのディレクトリ

$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 
    } 
    } 
関連する問題