カメラのファイル名をフォルダごとに詳細なファイル名に一括変更する

カメラのファイル名をフォルダごとに詳細なファイル名に一括変更する

これは、Windows Home 64 ビットのデスクトップ PC で実行されている Window PowerShell に関する質問です。

約 100 個のフォルダーの写真ファイル名を、 のようなカメラとスキャナーのファイル名から のような005_2.JPG冗長なファイル名に変更していますSome Kid Riding a Bicycle

Windows PowerShell コマンドを使用しています:

Dir | %{Rename-Item $_ -NewName ("Some Kid Riding a Bicycle-{0}.jpg" -f $nr++)}

これは問題なく動作します。

しかし、次のフォルダに CD\ して、新しいフォルダの新しい件名を新しい文字列に置き換えると、ファイル名に追加された「インデックス」番号は「1」にリセットされず、前の操作のインデックスに続く次の番号 (この場合は 111) にもならず、さらに大きな番号に増加します。

最後の操作の最後のインデックスが次の例のように「111」だった場合:

-a----      2/4/2020   8:02 PM         404601 Some Kid Riding a Bicycle-111.jpg

次に、8 つのファイルを含むフォルダーに cd\ します。

Mode                LastWriteTime         Length Name
-a----        1/16/2020  11:39 PM         598118 018_15.JPG

[6 lines omitted here]                                                          

-a----        1/16/2020  11:39 PM         727598 DSC017.jpg

そして実行します:

> Dir | %{Rename-Item $_ -NewName ("Some Old Guy Riding a Bicycle-{0}.jpg" -f $nr++)}

そのフォルダーでは、出力シーケンスの次のファイル名は次のようになります。

-a----   1/16/2020  11:39 PM     598118 Some Old Guy Riding a Bicycle-120.jpg

インデックスが新しいターゲット フォルダー内のファイル数だけ先にジャンプしたようです。最後の数文字-f $nr++) が関係しているかどうか疑問に思っていますが、私の貧弱なライブラリではこのような文字列への参照は見つかりませんでした。

これを修正して、-1 (または他のプリセット値) からやり直すにはどうすればよいでしょうか?

答え1

$nr は変数であり、各コマンドでその値を繰り返します。その範囲は PWSH セッションです。セッションが開いている限り、"$nr = 1" という命令を発行して新しい値を割り当てない限り、$nr の値は増加し続けます。

関連情報