仕事で、あるフォルダ内にあるファイル全てにサフィックスを付ける、という作業が発生しました。

対象フォルダは3つ。

1つ目のフォルダはファイル総数が30程度だったので、手作業で直しました。

が、2つ目のフォルダに格納されていたファイル数なんと200超…。

さすがに手で直すのはしんどかったので、コマンド(あるいはプログラム)での対処を検討しました。

さっそくですが、下記コマンドで一発でした。

Get-ChildItem | Rename-Item -NewName{$_.Name -Replace ".JPG","_xxx.JPG"}

コマンド実行時の環境としては以下の通りです。

実行環境
  1. 任意のフォルダ内に変換対象ファイルのみ存在する。
  2. 変換対象の拡張子はすべて「.JPG」
  3. 変換対象の存在する任意のフォルダでPowerShellを開いている。

軽く解説します。

Get-ChildItem

上記コマンドで、カレントフォルダ(現在位置)内のファイル全てを取得します。

| Rename-Item

取得したファイルの名前の変更を行います。

-NewName{$_.Name -Replace ".JPG","_xxx.JPG"}

新しい名前は、現在の名前の「.JPG」を「_xxx.JPG」に変換した値を設定します。

補足しておきますが、Get-ChildItemに引数としてパスを渡すことでカレントフォルダ以外の場所からでも実行可能です。

が、個人的にはわざわざパスを指定するくらいなら実行位置を変えた方が楽だったのでこうなりました。

どこかでお役に立てば幸いです。

以上です。

スポンサーリンク