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