Ti propongo una modifica allo script di cui ti ho parlato già nell’articolo PowerShell: spostare file in cartelle per anno e mese (in base al nome) e che andava a costruire una serie di cartelle e sottocartelle (spostando i file CSV analizzati) basandosi completamente sul nome del file stesso (che conteneva – appunto – anno e data al quale il CSV stesso faceva riferimento). La modifica stavolta lavora sul serio su una data, più precisamente quella di creazione del file, quando il nome del CSV non aiuta e non può quindi avere senso utilizzare il DataReorg
che ti ho proposto la prima volta.
Cosa cambia in soldoni rispetto al passato? Questo:
function DataReorg { $files = Get-ChildItem $Source -Recurse | where {!$_.PsIsContainer} $targetPath = $Destination foreach ($file in $files) { $bn = $file.basename.ToString() $year = $file.CreationTime.Year $month = $file.CreationTime.Month.ToString('00') $Directory = $targetPath + "\" + $year + "\" + $month if (!(Test-Path $Directory)) { New-Item $directory -type directory } Write-Progress "Moving $($bn) ..." $file | Move-Item -Destination $Directory } } DataReorg 'C:\Folder1\*.csv' 'C:\Folder1'
Ho giusto aggiunto un Write-Progress che ti mostra il file che lo script sta spostando in quel preciso istante, una finezza che può tornare comoda ma che chiaramente non è fondamentale. Per il resto cambia il metodo di “costruzione delle cartelle” perché stavolta – come detto qualche riga più sopra – l’anno e il mese vengono presi analizzando la data di creazione dei file CSV. Nel caso del mese vado a modificare di poco la variabile rendendola una stringa obbligatoria a due cifre, ciò vuol dire che i mesi da gennaio (1) a settembre (9) avranno uno zero prima per poter ottenere un risultato omogeneo (01-12).
La modalità d’uso dello script rimane la medesima: non toccare nulla della funzione, limitati a cambiare la directory sorgente e destinazione che trovi in ultima riga (DataReorg 'C:\Folder1\*.csv' 'C:\Folder1'
) dove C:\Folder1\*.csv
effettua la ricerca di tutti i file CSV contenuti in C:\Folder1
e il 'C:\Folder1'
finale specifica la destinazione in cui verrà creato l’albero di cartelle e sottocartelle per anno e mese in base alle date di creazione dei file trovati.
#StaySafe
L'articolo potrebbe non essere aggiornato
Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)
Pillole
Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato agli articoli "a bruciapelo"!
Se vuoi leggere le altre pillole fai clic qui.