PowerShell: spostare file in cartelle per anno e mese (in base alla data)

| |

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

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.

Gioxx's Wall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon

Condividi l'articolo con i tuoi contatti: