2017-08-16 14 views
1

エンドユーザーがバッチファイルの名前を簡単に指定しようとしています。私たちの場所を撮影する際には、場所の大きさに応じて写真が1枚か500枚しかない場合があります。コードは以下のディレクトリにあるファイルの数に基づいて、私たちの写真の名前を変更バルクに美しく動作します:PowerShellコマンドを使用してファイルの一括して名前を変更する

$prefix = "[SomePrefix]" 
$files = Get-ChildItem 
$id = 1 
$files | foreach { Rename-Item -Path $_.fullname -NewName ($prefix + ((($id++).tostring()).padleft(($files.count.tostring()).length) -replace ' ','0') + $_.extension) } 

コードパッドディレクトリ内のファイル数、すなわち1に基づいて先行ゼロと一緒に写真のファイル名、 2、3、4、5の合計量が9ファイル未満の場合。 01、02、03、04、05ファイルの総量が10〜99の場合、 001,002,003,004,005の3つの先行ゼロが常に保持されるようにこのコードを変更する必要があります。ディレクトリ内のファイル数。しかし、既存のディレクトリを再帰的に使用するコードが必要なので、写真を別のフォルダに整理して番号(0-9; 10-99; 100-999)に基づいてコードを実行する必要がなくなります。各。

例写真ファイル名規則:PREFIX_001.jpg

は、誰もが自分のニーズに合うように上記のコードを変更する方法を教えてもらえますか?

+0

$Pathの定義に基づいて、コメントすべての人に感謝したディレクトリ内のすべてのファイルの名前を変更します。社内の同僚との審議の後、次のコードで把握していると考えられます。 – user63471

答えて

0

PadLeftはここでは必要ありません。

.ToString("000")は3桁の数字になります。

は、あなたがこれを行うことにより、桁の最低限必要な数にまで常にパッドにコードを調整することができ

いくつかの詳細はhereの書式数のページを参照してください。これは文字列を作成します

$Prefix = "[SomePrefix]" 
$Files = Get-ChildItem 
$PadTo = '0'*$Files.Count.ToString().Length 
$ID = 1 
$Files | ForEach { Rename-Item -LiteralPath $_.fullname -NewName ($prefix + ($id++).tostring($PadTo) + $_.extension) } 

$PadToあなたのディレクトリにあるファイル数に応じて0の数だけです。100-999のファイルを持つ場合は、3 0、それ以上のものは4,5などとなります。

+0

ありがとうございました!私はあなたの変更されたコードを試しましたが、これはまだエンドユーザーが自分の写真を整理し、$ PadToを手動で変更する必要があります。 3つの先行ゼロ、最初のゼロが1の写真10-99、そのままの写真100-999で、写真1-9の名前を変更するコードが必要です。それは意味をなさないか、私は理解していませんか? – user63471

+0

@ user63471 Get-Childitem呼び出しに-recurseを追加して、そのようにすることはできますか? individualualltをチェックするよりもはるかに簡単ですが、PadToを "000"に設定するだけで、常に3桁に渡すことができます。あなたが望むもののようです。 – ConnorLSW

0

大括弧は、ワイルドカードとして解釈できるので注意が必要です。

$Prefix = '[SomePrefix]' 
$Path = '.' 
$Folders = Get-ChildItem -LiteralPath $Path -Directory -Recurse 
ForEach ($Folder in $Folders) 
{ 
    $Counter = 0 
    Get-ChildItem $Folder -File | 
     ForEach-Object { 
      Rename-Item $_.FullName -NewName "${Prefix}_$($Counter.ToString('000'))$($_.Extension)" 
      $Counter++ 
     } 
} 

このソリューションは、再帰的にPrefix_001.ext形式

関連する問題