Ryanの答えは、新しいファイル名のベース名へのハード参照なしで機能するため、素晴らしいです。
私は常に何らかの理由でファイルの名前を変更していますが、powershellを使用して文字列を操作する創造的な方法を見つけました。これを行う別の方法を次に示します。
gci *.jpg | Rename-Item -NewName {$_.basename -replace "$($_.basename.split(".")[-1])$","$(290-$_.basename.split(".")[-1])$($_.extension)"}
このワンライナーは、jpg、gif、またはtxtファイルであっても、同じ方法で他のファイルの名前を変更するために再利用できます。唯一の要件は、ベース名の最後の部分が「。#」で終わることです。
それで、ここで何が起こっているのでしょうか?それを分解するために、$ _が現在「Vitrine Hinge.12.jpg」ファイルの[System.IO.FileInfo]オブジェクトであるとしましょう。したがって:
$ _。basename
[文字列] "Vitrine Hinge.12"と等しくなります
$_.basename.split(".")
次のエントリを持つ配列になります。
Door Hinge
12
そのため、[1]は「12」を指します。ただし、代わりに使用したことに注意してください:
$_.basename.split(".")[-1]
これは、「Viterine Hinge.Chrome.12.jpg」という名前のファイルがあった場合、「Chrome」を参照していたためです。[-1]を使用すると、配列の最後の項目が取得されるため、ファイルに名前に他のピリオドが含まれていても問題はありません。
さて、この時点で$()にカプセル化し、-replace演算子で使用します。文字列の最後で正規表現が一致するように、最初の引数を$で終了していることに注意してください。この方法では、ファイルに名前に他の番号が含まれていても問題ありません。たとえば、「Viterine D00r Knob.0.jpg」は「Viterine D290290r Knob.290.jpg」に名前が変更されません。
何か見逃した場合、私に知らせてください、乾杯:)