仕事で、あるフォルダ内にあるファイル全てにサフィックスを付ける、という作業が発生しました。
対象フォルダは3つ。
1つ目のフォルダはファイル総数が30程度だったので、手作業で直しました。
が、2つ目のフォルダに格納されていたファイル数なんと200超…。
さすがに手で直すのはしんどかったので、コマンド(あるいはプログラム)での対処を検討しました。
さっそくですが、下記コマンドで一発でした。
Get-ChildItem | Rename-Item -NewName{$_.Name -Replace ".JPG","_xxx.JPG"}
コマンド実行時の条件としては以下の通りです。
軽く解説します。
Get-ChildItem
カレントフォルダ(現在位置)内のファイル全てを取得します。
| Rename-Item
取得したファイルの名前の変更を行います。
-NewName{$_.Name -Replace ".JPG","_xxx.JPG"}
新しい名前は、現在の名前の「.JPG」を「_xxx.JPG」に変換した値を設定します。
補足しておきますが、Get-ChildItemに引数としてパスを渡すことでカレントフォルダ以外の場所からでも実行可能です。
が、個人的にはわざわざパスを指定するくらいなら実行位置を変えた方が楽だったのでこうなりました。
どこかでお役に立てば幸いです。
以上です。