2017-11-13 9 views
0

私のクエストは、複数のフォルダ内の各ファイルの名前を一度に変更でき、フォルダ固有のインクリメントを使用する方法です。PowerShell - いくつかのフォルダ内のいくつかのファイルの名前をインクリメントで変更します。

具体的には、フォルダ内の.jpgファイルの名前を変更したいとします。フォルダ+と追加の拡張子 '.X'と同じ名前に1.1,1.2,1.3、...、99.1、という名前が付けられています。 X = 1,2、...、99である。

など。フォルダ1.1に3つのファイルが含まれている場合は、1.1.1.jpg、1.1.2.jpg、および1.1.3.jpgという名前を付けることにします。

私はPowerShellのに新しいですが、私は、私は次のコードで問題を解決するために管理考え:

$i = 1 
Get-ChildItem "C:\Users\Rename" -Recurse | Where {$_.extension -eq ".jpg"} | %{Rename-Item $_.FullName -Newname ($_.Directory.Name+'.{0}.jpg' -f $i++)} 

フォルダが変更されたときしかし、増分はもちろん理解していない...

誰かがこの問題に対する洗練された解決策を持っているのではないか、またはPowerShellのif/for文を使用する方法を習得しなければならないのだろうか?

すべての回答に感謝します。 (。また、大幅にPowerShellのでコーディング等「のために」をヒントに感謝します)

/エリック・

答えて

0

それらをループ、その後、最初のフォルダのリストを取得し、$リセットiを1毎回:

$folders = Get-ChildItem "C:\Users\Rename" -Recurse | where {$_.PSIsContainer -eq $true} | select FullName 

foreach ($folder in $folders) { 

Set-Location $folder.FullName 

$i = 1 

Get-ChildItem -Filter "*.jpg" | % {Rename-Item $_.FullName -Newname ($_.Directory.Name+'.{0}.jpg' -f $i++)} 
} 
+0

ありがとうございますGareth!このコードは私にとって完璧に機能し、また非常に教育的であり、私は非常に有益です!特に啓蒙は、$フォルダを持つフォルダのパスを定義する方法でした。もう一度ありがとう! PowerShellの私のさらなる発展に本当に役立ちます:) –

+0

@EricAckevallありがとう、問題ありません。それは少し簡素化することができますが、正確にそれが何をしているのか分かりにくい可能性があります。 –

関連する問題