デジカメで撮った写真が溜まってきたので、整理しようかと考えました。
ついでなので、わかりやすいファイル名を付けようと思います。
ということで以下が今回使用したコマンドです。
dir "Photo*.jpg" | ren -newName { [Text.RegularExpressions.Regex]::Replace($_.Name, "Photo(\d*)`.jpg", "運動会`$1.jpg") }
このコマンドはPhotoXXX.jpg というファイル名を 運動会XXX.jpg に変換します。XXXは連番を意味しています。
まずはdirで対象の画像ファイルを絞り込み。
次に、絞り込んだファイルをパイプで渡してren(Rename-Itemコマンドレット)でファイル名を変換します。
ファイル名の変換は、正規表現を扱うクラスのReplaceメソッドで行っています。
Replaceメソッドの第1引数が元のファイル名、第2引数が変換後のファイル名です。
第1引数の方は”Photo(\d*)`.jpg”とすることで、Photoで始まる連番ファイルを対象にしています。このとき、拡張子の部分は`を付けないと上手く行かないので注意してください。
第2引数は、連番を残して「Photo」を「運動会」に変更しています。$1というのは第1引数の正規表現パターンを表しています。今回は連番の部分が相当します。
もしも正規表現パターンが複数ある場合は$1,$2とパターン分の指定が可能になります。
今回のコマンドを実行すると
Photo000.jpg Photo001.jpg Photo002.jpg Photo003.jpg Photo004.jpg Photo005.jpg Photo006.jpg Photo007.jpg Photo008.jpg Photo009.jpg
というファイル群は
運動会000.jpg 運動会001.jpg 運動会002.jpg 運動会003.jpg 運動会004.jpg 運動会005.jpg 運動会006.jpg 運動会007.jpg 運動会008.jpg 運動会009.jpg
のように変換されます。
万が一に備えて、ファイルのバックアップを取った上で実行してください。PowerShell from Japan!! では責任は負いかねます。
コメント