2008-11-16
Vannak különböző mániáim, az egyik, hogy a digitális fotómasinák csilivili több MByte-os progijai helyett jobban szeretem használni a memória kártya olvasót a képek letöltéséhez. Ez részben kényszerűség is, mert két Canon fényképezőgépet is használunk a családban. A letöltő programjuk ránézésre ugyanaz, de mégis inkompatibilisek. A lényeg, hogy egy mappába szoktam betölteni a képeket, és akkor jön a manuális munka, dátum szerint almappákba szétpakolom őket. Azután a megnézegetem a termést, kiszórom a bénaságokat, a mappák nevét meg kiegészítem azzal, hogy miről is készültek a képek. Az alábbi VB script (két változat), a manuális dátum szerinti szétválogatást bízza a gépre.
Az első változat az aktuális directory-ban futtatható, a script-et valami elérhető helyre kell bemásolni.
'/*********************************************************************************
'* Author - Kiraly Tibor *
'* www.tkiraaly.hu *
'* Date - 2008.11.15. *
'* OS - MS Windows (W2k, XP ... ?) - Wisual Basic Script *
'* *
'* A script-t a kartyaolvaso segitsegevel letoltott fenykepeim datum szerinti *
'* almappakba rendezesere keszitettem. *
'* *
'* A script-t egy olyan directory-ba tegyuk, amely rajta van a PATH-on *
'* (pl. Windows). Ha Total Commander-t hasznalunk, akkor egyszeruen lepjunk *
'* bele az adott directory-ba, es gepeljuk be, hogy "photosort.vbs". A script *
'* vegigmegy a directory-ban levo file-kon. Megvizsgalja, hogy az adott file *
'* datumanak megfelelo subdirectory (pl. 2008_11_15) letezik-e. Ha nem, *
'* letrehozza, majd a file-t athelyezi bele. *
'* *
'*********************************************************************************/
Dim d ' file datuma
Dim f ' honnan - aktualis directory
Dim t ' hova - cel directory
Dim oFS ' file muveletekhez
Dim oFR ' directory lekerdezeshez
Dim cFL ' File list
Dim oWMI ' WMI service eleresehez
Set oFS= CreateObject( "Scripting.FileSystemObject")
Set oFR = oFS.GetFolder(".")
f= oFR.Path
Set oWMI= GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set cFL= oWMI.ExecQuery( "ASSOCIATORS OF {Win32_Directory.Name='" & f & "'} Where ResultClass = CIM_DataFile")
For Each objFile In cFL
d= Left( objFile.LastModified, 8)
t= f & "\" & Left( d, 4) & "_" & Mid( d, 5, 2) & "_" & Right( d, 2)
If not oFS.FolderExists( t) Then
oFS.CreateFolder( t)
End If
oFS.MoveFile objFile.Name, t & "\"
Next
Az második változat bárhonnan elindítható, egy fixen beleírt directory tartalmát dolgozza fel.
'/*********************************************************************************
'* Author - Kiraly Tibor *
'* www.tkiraaly.hu *
'* Date - 2008.11.16. *
'* OS - MS Windows (W2k, XP ... ?) - Wisual Basic Script *
'* *
'* A script-t a kartyaolvaso segitsegevel letoltott fenykepeim datum szerinti *
'* almappakba rendezesere keszitettem. *
'* *
'* A script vegigmegy a "c:\letolt" directory-ban levo file-kon. Megvizsgalja, *
'* hogy az adott file datumanak megfelelo subdirectory (pl. 2008_11_15) *
'* letezik-e. Ha nem, letrehozza, majd a file-t athelyezi bele. *
'* *
'*********************************************************************************/
Dim d ' file datuma
Dim f ' honnan - aktualis directory
Dim t ' hova - cel directory
Dim oFS ' file muveletekhez
Dim cFL ' File list
Dim oWMI ' WMI service eleresehez
f= "c:\letolt"
Set oFS= CreateObject( "Scripting.FileSystemObject")
Set oWMI= GetObject( "winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set cFL= oWMI.ExecQuery( "ASSOCIATORS OF {Win32_Directory.Name='" & f & "'} Where ResultClass = CIM_DataFile")
For Each objFile In cFL
d= Left( objFile.LastModified, 8)
t= f & "\" & Left( d, 4) & "_" & Mid( d, 5, 2) & "_" & Right( d, 2)
If not oFS.FolderExists( t) Then
oFS.CreateFolder( t)
End If
oFS.MoveFile objFile.Name, t & "\"
Next
A két script egy zip-ben letölthető innen: