- ベストアンサー
自動一括でexifの撮影日時に名前とフォルダ作成
Macのfinderで大量の写真を整理したいです。 まず自動一括でexifの撮影日時に名前を変更して、更に撮影日時別のフォルダー作成して振り分ける方法を教えてください。 試したのは、名前変更のためにExifRenamerというアプリで試しましたがデジタルデータの撮影日時でなく、macに取り入れた作成日時が名前変更してしまいました。 是非お願いします
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
おまけです。 せっかくなので、ちょっと改良してみました^-^ ・最初に文字数を指定できる様に改良してみました。 ・ファイル名が短すぎるものは処理しないようにしました。 ・処理終了を報告するようにしました。 ある意味蛇足ですね(汗 板汚しすみませんm(_ _)m (* ファイル名の先頭から指定した長さの文字を読み取り、対応するフォルダを作成しそこに移動させるAppleScript 動作確認:OSX10.6.8, 作成:2013.3.15, 作成者:w6o6n OKwave,質問:No.7992281で公開 使い方:起動して、ファイル名の先頭から何文字までを対象にするか指定します。 次に画像ファイルの入っているフォルダを指定して下さい。 対応するフォルダにファイルを移動するだけのスクリプトです。 対象はファイルだけ、.DS_storeファイルや指定長に満たないファイル名のものは処理しません。 注意:簡易版なのでエラー処理とかほとんどしてません^-^; ファイルやフォルダが多過ぎて処理が進まない時は適当に小分けにすると確実です。 *) --先頭の何文字目までを対象にするか指定 repeat --空入力防止のためのrepeat set dialog1 to ("ファイル名の先頭文字に対応するフォルダに振り分けます。" & return & "先頭文字の長さを指定して下さい。") display dialog dialog1 default answer "8" buttons {"Cancel", "Set"} default button 2 --大文字に統一、無関係な文字を除去 try set FnameLen to (text returned of result) as integer if FnameLen ≠ 0 then exit repeat end if end try end repeat --次の作業内容をお知らせ set dialog2 to ("次に表示されるダイアログで" & return & "「振り分けたいファイルが入ったフォルダ」" & return & "を指定して下さい。") display dialog dialog2 --処理対象のフォルダを選択、処理対象のファイルのリストを作成 tell application "Finder" set mifold to (choose folder) as alias set filelist to every file of mifold as alias list --set foldlist to name of every folder of mifold as alias list --個々のファイルへの処理 repeat with ObjFile in filelist repeat --除外するものに当たった時にエスケープするためのリピート --ファイルのプロパティを取得、 set aProp to properties of ObjFile --ファイル名(拡張子を覗く)の長さをFnameCountに格納 set FnameCount to (((length of name) of aProp) - ((length of name extension) of aProp) - 1) as integer --想定より短いファイル名のものを除外 if FnameCount < FnameLen then exit repeat end if --DS_Storeファイルを誤認することがあるので除外 if name of aProp = ".DS_Store" then exit repeat end if --ファイル名の先頭から指定された数までの文字列を取得 set Firstchar to (characters 1 thru FnameLen) of name of aProp as Unicode text --先頭8文字に対応するフォルダがなければ作成、あればそれを移動先に指定 if not (exists folder Firstchar of mifold) then set MoveFol to make new folder at mifold with properties {name:Firstchar} else set MoveFol to folder Firstchar of mifold end if --ファイル移動。ロックがかかってたりしたらスルー try move ObjFile to MoveFol end try exit repeat end repeat end repeat display dialog "振り分け作業が完了しました!" with icon note --giving up after 5 end tell
その他の回答 (4)
補足拝見しました。 うまくいったようで良かったです^-^ >日時の名前を「年-月-日_時間-秒」に今までしていたので統一したい すでにできてるようですが念のため。 Shupananの「書式」を以下の様にすればできます。 [year]-[mon]-[day]_[hour][min]-[sec] >applescript...「先頭8文字」を「先頭10文字」に変更すればいいのでしょうか? set First8char to (characters 1 thru 8) of name of aProp as Unicode text を set First8char to (characters 1 thru 10) of name of aProp as Unicode text に変更すればOKです。 この他、文章中の「8文字」を「10文字」に、プログラム中の全てのFirst8charをFirstcharとかに 変更しておくと後で勘違いせずに使えます。 グッドラック^o^/
補足です。 第2段階はやり直しが利かないので、バックアップを取ってから作業することお薦めします。
一括は難しいですが、2ステップで良ければ^-^; 1段階目:exifの撮影日時に名前を変更 私も愛用している定番のリネームアプリ「Shupapan」をご紹介します。 exifの撮影日時をファイル名にする機能もあります(設定は画像をまねればOKです) 以下のサイトでダウンロードできます。 http://sunsky3s.s41.xrea.com/shupapan/ 設定したらファイルを放り込みます。 プレビューボタンを押せば、どのように名前が変わるか事前に確認が出来ます。 実行ボタンを押せば名前を変更できます。 (例:画像の設定では2013.3.15、12:34:56撮影のファイルに"20130315-123456"というファイル名がつきます)。 2段階目:撮影日時別のフォルダー作成して振り分ける AppleScriptを作ってみました。一応使い方を書いておきます。 「ユーティリティ」フォルダに入っている「AppleScript エディタ」を起動して、新規(コマンド+N)、 開いたウィンドウに以下のスクリプトをコピペし、実行ボタンを押して下さい。 フォルダの指定を求められますので、「1段階目で名前を変更した画像ファイルが入っているフォルダ」を指定してやれば、自動で日付け別でフォルダに振り分けます(例:"20130315"フォルダに"20130315"で始まるファイルが移動)。 (さすがに秒単位まで日時を振り分けるとは考えにくかったので、日付で振り分ける設定にしました) どちらも設定をいじれば思い通りのことができると思います。 お役に立てば幸いです^-^ この文章より下の内容をAppleScript エディタにコピー&ペーストして下さい。 (* フォルダ内のファイルの先頭8文字を読み取り、フォルダを作成しそこに移動させるAppleScript 動作確認:OSX10.6.8, 作成:2013.3.15, 作成者:w6o6n 使い方:起動して、画像ファイルの入っているフォルダを指定して下さい。 フォルダを作ってファイルを移動するだけのスクリプトです。 「終わったよ!」といった表示もない、さっぱり風味となっております(笑) 注意:簡易版なのでエラー処理とかほとんどしてません^-^; ファイルやフォルダが多過ぎて処理が進まない時は適当に小分けにすると確実です。 *) tell application "Finder" set mifold to (choose folder) as alias set filelist to every file of mifold as alias list repeat with ObjFile in filelist --ファイルのプロパティを取得 set aProp to properties of ObjFile --ファイル名の先頭8文字を取得(8を変更すれば好きな文字数に変えられます) set First8char to (characters 1 thru 8) of name of aProp as Unicode text --先頭8文字に対応するフォルダがなければ作成、あればそれを移動先に指定 if not (exists folder First8char of mifold) then set MoveFol to make new folder at mifold with properties {name:First8char} else set MoveFol to folder First8char of mifold end if --ファイル移動。ロックがかかってたりしたらスルー try move ObjFile to MoveFol end try end repeat end tell
補足
w6o6nさん、どうもありがとうございます。自分が望んでいたことが簡単に出来ました、感謝です。 ソフトも使いやすく無事 撮影日時にリネーム出来ました。またapplescriptも初めて使いましたが設定後呆気無く出来て驚いております。本当にありがとうございます。 一つapplescriptの質問なんですが 日時の名前を「年-月-日_時間-秒」に今までしていたので統一したいのですが、 この場合「先頭8文字」を「先頭10文字」に変更すればいいのでしょうか? 初歩的な質問ですいません。
- chieffish
- ベストアンサー率44% (1149/2554)
リネームならこんなのが http://www.vector.co.jp/soft/mac/util/se496881.html FilemakerPro(v.11以下)をお持ちなら全部できるかも。
お礼
無事にできました、本当にありがとうございます。 appleスクリプトって凄いですね、少し学びたいと思ったほどです。 早いレスポンスで本当に助かりました、ありがとうございます