TOP > blog > 写真の整理は削除・削除・が基本。しかし、ファイル名変換スクリプト(VBS)で簡単整理
スクリプト
2015/11/04

写真の整理は削除・削除・が基本。しかし、ファイル名変換スクリプト(VBS)で簡単整理

管理者用
blog

先日、鳥撮り仲間との間で写真の整理の話題になり、話を聞いていると写真の整理には、みんな苦労しているようです。
整理の基本は、削除・・・削除・・・削除   必要なものだけ残し、その都度、ファイル名・保存先等を決めて、整理して保存。

それは、分かっているのです。それが、出来ないのです。

撮って来た写真は、撮影日付のフォルダーにそのまま保存する方が多いようです。
仲間の一人は、鳥の種類のフォルダーを作っておいて保存する、との事でしたが、これだと日付がわからない・・・・・・・・・・・・・
私は、日付のフォルダー派ですので、鳥の名前で探すことはできません。どちらで整理するかは、難しい問題です。
写真整理アプリもあるらしいのですが、結局情報を入力しないと使えないらしいのです。

仲間の、鳥のフォルダーを作って・・・から、思い浮かびました。

写真を見ながら、鳥の名前のフォルダーにドラックしてどんどん振り分けていく
そして、写真の名前を  フォルダー名(鳥の名前) + 撮影日 + 元のファイル名  に変換するスクリプトを作ったら使えるのではと思い立たのです。

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

 

 

関連記事