2014年11月23日日曜日

写真ファイルリネーム&整理用スクリプト「PhoteMover.vbs」


Latest Version 1.1.0(更新日:2014/11/25)

長~い前置きを飛ばして使い方を見たい人はこちら



■長~い前置き

写真ファイルをどのように整理するかは、みなさんいろいろとやられていると思います。
一番いいのは、自宅のNASに保存し、それの縮小版をGoogleフォト等の無料クラウドでバックアップすることでしょう。
私も最初、自宅にファイルサーバーを設置しているので、同期ソフトやEye-Fiなどで保存して、さらにクラウドにバックアップ等をしていました。
しかし、自宅からファイルサーバーをなくし、全面的にクラウド保存に切り替え中のため、今後はこの方法が利用できません。

そこでGoogleドライブを有料契約し、フルサイズの写真をそこにしまうことにしました。
この形ならば、公開・共有はGoogleフォトから簡単にできます。
しまい方としては、やはり撮影年月日フォルダを作ってしまってしまうのが素直でしょう。
そうすれば、年月日のアルバム形式になるので一番わかりやすいはずです。
そして、デジカメだけでなく、スマートフォンや、さらにハンディカムで撮ったビデオファイルも、一括して保存してしまいたい。

ただ、それにはファイル名を整理する必要があります。
ぱっとみて、撮影日や撮影機種がわかる名前が理想的です。

そこで、ファイル名を変更しつつ、撮影年月日のフォルダに移動してくれるツールが必要でした。
もっとも手軽なのは、Windowsの写真と動画の取り込みを使う方法でしょう。
これは意外とよくできていて、ほとんどの場合はこれで足りるでしょう。


特徴的には、読み込み時にデバイスから削除(要するに移動)できること、回転させてから取り込みできること、フォルダ名を細かく指定できることでしょう。


フォルダ名は上記のパターンから選べます。
ただし、ファイル名はそれほど細かい指定ができません。



タグは任意の文字を書き込めますので、そこに機種を打ちこめばだいたい理想のことはできます。
が、機種ごとにアルバムたるフォルダができてしまうことになります。
機種が1種類であるとか、機種名なんていらないという人は、これで事が足りるはずです。

しかし、微妙に私の要望にはあわない。
ちなみにPlayMemories Homeは、機種名をファイル名に完全に入れられません。

というわけで、取りこむ部分は、PlayMemoreis等に任せて、その後にリネームしてから指定フォルダに移動するスクリプトを作りました。
本当ならば、Googleドライブに直接アクセスして保存してくれるといいのですが、そこは仕方ないのでローカルのPCのHDDとGoogleドライブを同期することで実現することにしました。
すごく単純なスクリプトですが、使ってみたら思っていたよりも便利で、「ああ、作って良かった」と思ったわけです。




……はい。ありました。
しかもなんでしょう。
あれですよ、あれ。

幸せの青い鳥は、直ぐ近くにいた!

みたいな。



Adobe Photoshop Lightroom 5.0 日本語版 Windows/Macintosh版


Adobe Photoshop Lightroom 5 Windows版 [ダウンロード]


Adobe Photoshop Lightroom 5 Windows/Macintosh版 乗換え/特別提供版

これです。
知らない人のために紹介すると、このソフトは写真の総合ソフト。
私は最初、単なる写真専用加工ソフトかと思っていました。
しかし、正しくは取り込み、管理、加工まで行うことができる超ハイスペックなソフトです。
取り込みに関しては、完璧に私の要望に応えてくれます。
とにかく凄いファイル名のカスタマイズ。Exifの情報を自由自在に組み合わせてフォーマットできます。


例えば、私のやりたいフォーマットの場合は、、LightRoomで設定すると上記のようになります。
Exifの情報や日付のフォーマットをかなり自由に使えるので、他の情報を使いたい人でも困ることありません。


さらにサブフォルダも動的なフォルダが指定できます。


これだけカスタマイズできると、思い通りにできます。
もちろん、画像の加工もPhoteShopのAdobeですから、かなり強力です。
シャドウだけの明るさ調整や、傾き調整など、フリーの物にはない機能が満載です。
公開方法も、HTMLやFLASHのページを生成したり、クラウドサービスに直接アップすることも可能です(TwitterやGoogleフォトが標準のプラグインにないのが残念ですが)。

このように内容は凄いのですが、なんたってAdobeです。
やっぱり……お高いんでしょう?

はい! 値段はお高いです!!(実売は上のリンクを見て)

写真の整理だけに新しく買うのだとしたら抵抗があるでしょう。




いや、まあ、写真加工として少しだけ使ってはいたんです。
でも、取り込み部分でこんなに便利な機能があるとは思いませんでした。
さんざん探したのに、実は普段、自分が使っていたソフトで実現できたとは……なんともまぬけな話です。

ちなみに、かなりパーフェクトにすばらしいLightRoomですが、ライトユーザーには一つだけ面倒な部分があります。
このアプリでは、銀塩時代のフローを取り入れていて、撮影した生データをフィルムと考え、加工後のデータを現像した写真として処理しています。

そのため、写真(加工後ファイル)をフィルム(加工前ファイル)に上書きすることができません

RAWデータで写真を取っている人には、この方法はベストマッチです。
しかし、ライトユーザーの場合は、元のJPEGは必要なくて、加工して見やすくなったJPEGだけ在ればいいという人もいるでしょう。そういう人は、上書き保存した方が楽になります。
でも、LightRoomでは、別名で保存→元ファイルを削除→別名を元の名前にリネーム(必要に応じて)ということをやらなければなりません。
容量に問題がないならば、肥大化してもいいですが、私のようにGoogleドライブを有料で借りている人は無視できません。

この場合のソリューションとしては、LightRoomで取りこむ先はGoogleドライブと同期しないフォルダにしておくようにし、現像先のみGoogleドライブにしておく方法です。(※下記に追記訂正有り)

もちろん毎回、現像をしないとGoogleドライブに保存されないようになりますが、ある意味選別した画像だけ同期が取られるので、容量的な問題を考えてもいいフローかもしれません。
また、HDDトラブルでデータが飛んだ時でも、ライトユーザーならば、「フィルム(生データ)は消えても写真(加工データ)さえ残っていれば」と考える人も多いでしょう。
私もアートで写真というより、想い出の記録として残す方がメインです。だから最悪、写真(加工データ)さえ残っていれば問題ありません。

ただし、このソリューションにも問題点があります。

すぐに気がつくと思いますが、ローカルの保存容量が倍以上に膨らんでしまうという点です。
解決するには、元データを定期的に削除するか、Googleドライブに直接公開できるプラグインが必要です。
しかしながら、プラグインはざっと探したところ適当なのがありません。
2014/11/23現在、公式にGoogleドライブに対応したプラグインが2種類アップされていますが、バージョンが合わないのか、インストールしてもまったくメニューに現れません。
Webで探したところ、下記の動く物がありましたが、残念ながら自動的に保存先を撮影年月日フォルダにすることはできませんでした。


一応、保存時にフォルダを選ぶ設定ができるのですが、フォルダを作成する機能はないため、プラグインのリンクから該当フォルダをブラウザで開いて予めフォルダを作成し、プラグインに戻ってリストをリフレッシュし、作成したフォルダを指定する……というステップが必要となります。
1日分だけやるならまだしも、複数日分をまとめてやるのは面倒そうです。
標準のHDD保存時と同じように、「YYYY/YYYY-MM-DD」フォルダを自動的に作成してくれる、いいプラグインがあればよいのですが……。
まあ、これはしばらくはGoogleドライブの同期機能で容量は目を瞑ることにしましょう。元データを消せばいいだけの話ですしね。


※2014/11/24追記→11/25訂正
現像では、HDD保存でも撮影年月日フォルダを作成してくれないため、このソリューションだと私の作ったスクリプトを使う必要がありました。
すなわち、元データ取り込み→適当な場所に現像→スクリプトでGoogleドライブ同期フォルダに移動という手順になります。
スマートじゃないですが、現在はスクリプトを変更してこの方法で処理しています。
下で「使う必要がなくなった」と書いていますが、実は使っています。


というわけで、非常に長い前置きでしたが、結果を申し上げると……




まあ、それでもLightRoomを持っていない人には便利に使えるスクリプトだと思うので、せっかくなので公開致します。



特定のフォルダにある画像ファイルをリネームして、別フォルダに移動するスクリプトです。
リネームは、撮影年月日と撮影機種を元に行います。
非常に単純なスクリプトですので、簡単にカスタムできると思います。
Windows7でのみ、動作確認しています。

なお、お約束として、このスクリプトを使ったことにより損害が出ても、Guymは一切責任を負いません。
また、改造等は自由に行っていただいてかまいませんが、改造版を公開するときは、ここに掲載されているスクリプトの改造版である旨を明記するようにしてください。

ちなみに、なにか要望をいただいた場合、簡単なことでしたら対応するかもしれません。


■基本的な使用方法

01) 「C:\PhoteTemp」と「C:\GoogleDrive」を作成します。
02) 「C:\PhoteTemp」に取りこんだ写真を置きます。
03) ダウンロードした「PhoteMover.zip」を解凍してできた2ファイルを適当な場所に置きます。
04) 「PhoteMover.bat」のショートカットを作成し、それを実行します。
05) 黒い画面(DOSプロンプト)が開いて処理が開始され、終了すると「C:\GoogleDrive」にリネームされたファイルがしまわれているはずです。あとは、このフォルダをGoogleドライブと同期するなり、好きにします。


■カスタム方法

「PhoteMover.vbs」をメモ帳等で変更します。
変更ミスすると誤動作したり、動かなくなりますので注意して変更してください。
INIファイルや引数にすればいいのですが、自分用だったのでそんな面倒なことはしていません。
フォルダの指定をするときは、必ず最後に「\」を付けてください。

●保存元フォルダの変更(初期値:C:\PhoteTemp\)
下記の赤文字部分を変更します。
' 保存元フォルダ
' -------------------------------------------------------
Const cstrTempPath = "C:\PhoteTemp\"
' -------------------------------------------------------

●保存先フォルダの変更(初期値:C:\GoogleDrive\)
下記の赤文字部分を変更します。

' 保存先フォルダ
' -------------------------------------------------------
Const cstrPhotePath = "C:\GoogleDrive\"
' -------------------------------------------------------


●保存先年名フォルダを作成しないようにする(初期値:True)
※Ver.1.1.0から追加。
通常は、保存先フォルダの下に、「YYYY\YYYY-MM-DD」という2階層のサブフォルダを作成しますが、「YYYY-MM-DD」という1階層にしたい場合は、下記の赤文字部分を「False」に変更します。

' 保存先年名フォルダ
' -------------------------------------------------------
Const cbooYearFolder = True
' -------------------------------------------------------

●カメラ名(機種)を含まないようにする(初期値:True)
ファイル名にカメラ名を入れないようにするには、下記の赤文字部分を「False」に変更します。

' カメラ名を付与
' -------------------------------------------------------
Const cbooCamera = True
' -------------------------------------------------------

●撮影日を含まないようにする(初期値:True)
ファイル名に撮影日を入れないようにするには、下記の赤文字部分を「False」に変更します。

' 撮影日を付与
' -------------------------------------------------------
Const cbooWhenTaken = True
' -------------------------------------------------------

●撮影日とカメラ名の順序を逆にする(初期値:True)
ファイル名のカメラ名と撮影日の順番にするには、下記の赤文字部分を「False」に変更します。

' 撮影情報の付加順番
' -------------------------------------------------------
' TRUE : 撮影日_カメラ名
' False : カメラ名_撮影日
' -------------------------------------------------------
Const cbooPhoteInfo = True
' -------------------------------------------------------
●RAWファイルも対象にする(初期値:しない)
RAWファイルもリネーム&移動の対象にするには、下記の部分に赤文字部分を追加します。
※RAWデータは撮影年月日が撮れないので、ファイル更新日で処理されます。

' 対象の拡張子
' -------------------------------------------------------
' 大文字で記載し、最後にスラッシュを付ける。
' -------------------------------------------------------
Const cstrPhoteExtend = "JPG/ARW/MPG/M2TS/MODD/ARW/"
' -------------------------------------------------------

■その他仕様

・連番は、001から999までです。
※Ver.1.0.0では、000から開始でしたが現在は001から開始します。
連写で同じ時分秒がつくことが考えられますし、もしかしたら知り合いから同じ時間の写真をもらうことがあるかもしれません。しかし、さすがに1000ファイルは行かないでしょう。
1000になるとエラーとなり止まります。

・ログファイルを生成します。
本スクリプトファイルがあるフォルダに、「PhoteMover.log」というログファイルを生成します。
そのため、実行する場合は、そのフォルダに書き込み権限が必要です。
ログには、リネームの内容等が記録されますので、確認したい場合はメモ帳等で開いてみてください。。
ログは実行するたびに上書きされるので、増殖するようなことはありませんが、直近の内容しか確認できません。

・撮影日がない、もしくは取得できない場合は、ファイル名にファイル更新日を採用します。

・保存元フォルダのサブフォルダ内のファイルは移動しません。

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

楽天市場:おすすめ