VB Script-ek, talán nem csak fotósoknak

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: