mercoledì 28 marzo 2012

Riorganizzare o rinominare i files immagine e MP3 con i dati EXIF e ID3 (e, ovviamente, leggere i dati EXIF e ID3) - Parte 2 - Lo Scriptomane - livello MEDIO

Eccomi finalmente a scrivere la seconda parte di questo articolo per riorganizzare le nostre gallerie fotografiche e / o di files MP3.


Nel precedente articolo ( http://scriptomane.blogspot.com/#!/2011/07/riorganizzare-o-rinominare-i-files.html ) abbiamo capito come utilizzare uno script vbscript ciclando la sua esecuzione su una cartella di files in un batch.

Questo, però, chiaramente può soltanto leggere le informazioni presenti nei files.


Ora aggiungiamo una funzione che, invece, ottiene esattamente la proprietà indicata come criterio di ordinamento, crea le diverse directory per ogni valore presente nei files e li sposta secondo questo criterio.




Creiamo un nuovo file: riordinaCollection.vbs



Set args = Wscript.Arguments
StrFolderNamet = args.Item(0)

intPropertyt = args.Item(1)

If args.length < 2 Then
  wscript.echo "Si devono fornire almeno due parametri a questo script."
  wscript.echo "SINTASSI: "
  wscript.echo "cscript nomeScript.vbs "
Wscript.quit
End if
'VERIFICARE LA PARTE IN GRASSETTO!!!!!




function fnRiordinaFiles(StrFolderName, intProperty)
        dim objShell
        dim objFolder
       
        set objShell = CreateObject("shell.application")
        set objFolder = objShell.NameSpace(StrFolderName)
       

        if (not objFolder is nothing) then
            set colItems = objFolder.Items
            For Each objFolderItem in colItems
                 if (not objFolderItem Is Nothing) then
                    dim objInfo, objInfoTip
 'ottengo la proprietà desiderata del file.
                     objInfo = objFolder.GetDetailsOf(objFolderItem, intProperty)
                        if (not objInfo = "") Then

' provo ad istanziare la sottocartella (così se esiste già lo rilevo)
                             set objSubFolder = objShell.NameSpace(StrFolderName & "\" & objInfo)

' se la cartella non esiste, la creo come sottocartella della cartella superiore (uso il metodo NewFolder)
                             if (objSubFolder is nothing) then
                                objFolder.newFolder(objInfo)
                                set objSubFolder = objShell.NameSpace(StrFolderName & "\" & objInfo)
                             end if

' uso il metodo MoveHere dell'oggetto sottocartella, per spostare il file nella cartella corrispondente alla sua proprietà.
                            objSubFolder.MoveHere(objFolderItem)
                           
                        end if
                     objInfoTip = objFolder.GetDetailsOf(objFolderItem, -1)
                   
                end if
           
                set objFolderItem = nothing
            Next
           end if
          
       
        set objFolder = nothing
        set objShell = nothing
    end function


fnRiordinaFiles StrFolderNamet, intPropertyt





Eccolo qui, senza tanti voli pindarici.

Questo script è semplice, potente e veloce.

Non fa altro che spostare i files in cartelle che vengono create (se già non esistono) con nome = ai valori distinti della proprietà che andiamo ad interrogare. 


Con semplicissimi modifiche si può ottenere che rinomini i files, anzichè spostarli, modificare la struttura delle cartelle di destinazione, cambiare il parametro secondo il quale si ordina....
... o, addirittura, secondo semplici logiche euristiche, determinare e separare gli scatti notturni da quelli diurni!!!!




Provatelo su una cartella di foto: è spettacolare!

Nessun commento:

Posta un commento

I commenti sono soggetti a moderazione, prima di essere pubblicati.

Qualsiasi contenuto illecito, immorale o che io ritenga (arbitrariamente) offensivo od inappropriato, verrà cancellato.