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.