写真の整理は削除・削除・が基本。しかし、ファイル名変換スクリプト(VBS)で簡単整理
管理者用先日、鳥撮り仲間との間で写真の整理の話題になり、話を聞いていると写真の整理には、みんな苦労しているようです。
整理の基本は、削除・・・削除・・・削除 必要なものだけ残し、その都度、ファイル名・保存先等を決めて、整理して保存。
それは、分かっているのです。それが、出来ないのです。
撮って来た写真は、撮影日付のフォルダーにそのまま保存する方が多いようです。
仲間の一人は、鳥の種類のフォルダーを作っておいて保存する、との事でしたが、これだと日付がわからない・・・・・・・・・・・・・
私は、日付のフォルダー派ですので、鳥の名前で探すことはできません。どちらで整理するかは、難しい問題です。
写真整理アプリもあるらしいのですが、結局情報を入力しないと使えないらしいのです。
仲間の、鳥のフォルダーを作って・・・から、思い浮かびました。
写真を見ながら、鳥の名前のフォルダーにドラックしてどんどん振り分けていく
そして、写真の名前を フォルダー名(鳥の名前) + 撮影日 + 元のファイル名 に変換するスクリプトを作ったら使えるのではと思い立たのです。
JPGファイルをメモ帳で開くと、日付らしい情報が入っているようです。又、カメラを購入した時についてくるメーカーのソフトでは画像のプロパティで撮影日を見る事が出来るし、ネットで調べれば、何とかなりそうな気がして色々と調査しました。
JPG画像ファイルから、日付情報を引っ張り出す方法がわかれば、先に進めます。
Exif【Exchangeable Image File Format】とは、1994年に富士フィルムが提唱したデジタルカメラ用画像ファイルの規格です。現在はJEIDA(日本電子工業振興協会)によって標準化されたため、各デジタルカメラにも採用されています。・・・・
そして、何とかなったようです。
単純だけど、ファイル名に鳥の名前がついたことは、これからの写真整理が楽しみです。
今回作成したスクリプトは次を参照ください。
<使い方>
下記のスクリプトをメモ帳等にコピーして拡張子を .vbs のファイル名で保存してください。
変換したい画像ファイルと同じフォルダーに場所に保存してください。
そして .vbs ファイルをダブルクリック するとスクリプトが実行します。(もう止められません)
同じフォルダー内のJPGファイルのファイル名が変換されます。
※スクリプトの使用にあたっての不具合等に対し、弊社の責任は有りません事をご了解の上、自己責任の元行ってください。
スクリプトと言っても、ファイルを操作するプログラムです、十分注意して行ってくださいね。
Option Explicit
Dim objArgs
Dim objFSO
Dim objFiles
Dim objParentFolder
Dim objWshShell
Dim strParentFolder
Dim objIMGH_File
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWshShell = CreateObject("Shell.Application")
objIMGH_File = ""
strParentFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set objParentFolder = objFSO.GetFolder(strParentFolder)
For Each objIMGH_File In objParentFolder.Files
Set objFiles = objFSO.GetFile(objIMGH_File)
Call renameFile(objFiles)
Next
Set objParentFolder = Nothing
Set objFiles = Nothing
Set objArgs = Nothing
Set objFSO = Nothing
WScript.Quit
'=========================================================================
Sub renameFile( objFiles)
On Error Resume Next
Dim strExName
Dim newfn
Dim imgIdx
Dim FolderNAME
Dim imgFilena
Dim FolderRetu
Dim satueiDate
Dim satueiDate_A
Dim folder_kaiso
Dim JPGIndx
Dim objWSHFolder
Dim fileMotonaji
Dim strText
strExName = objFSO.GetExtensionname( objFiles)
if strExName = "JPG" or strExName = "jpg" Then
newfn = objFiles.DateCreated
folder_kaiso = left(objFiles.path , len(objFiles.path) - len(objFiles.name) - 1)
FolderNAME = Split(folder_kaiso,"\") '改行でSPLIT
FolderRetu = UBound(FolderNAME)
imgFilena = FolderNAME(FolderRetu)
'既にフォルダー名が付いているファイルは名前の変更は行わない
fileMotonaji = InStr(1,objFiles.Name, imgFilena, 1)
If fileMotonaji = 0 Then
Set objWSHFolder = objWshShell.Namespace(folder_kaiso)
strText=""
'画像データから撮影日を取得
JPGIndx = 12
strText = objWSHFolder.GetDetailsOf(objWSHFolder.ParseName( objFiles.name), JPGIndx)
if steText = "" then
JPGIndx = 3
strText = objWSHFolder.GetDetailsOf(objWSHFolder.ParseName( objFiles.name), JPGIndx)
End if
satueiDate = InStr(1,strText, " ", 1)
satueiDate_A = Mid(strText, 1, satueiDate - 1)
satueiDate_A = Replace(satueiDate_A, "/", "-")
objFiles.Name = imgFilena & "-" & satueiDate_A & "-" & objFiles.Name
End If
End If
End Sub