Come eliminare i file più vecchi di N giorni automaticamente in Windows

Windows 10 ha funzionalità integrate per liberare spazio eliminando i vecchi file nella directory %temp% e nella cartella Downloads . Le impostazioni di Windows 10 hanno un'opzione ("Archiviazione") che cancella automaticamente i file temporanei che le tue app non utilizzano, i file nei download che non sono stati modificati negli ultimi x giorni o i file che si trovano nel cestino per x giorni.

Inoltre, lo strumento Pulizia disco cancella i file nella directory %temp% cui non è stato effettuato l'accesso negli ultimi 7 giorni.

Tuttavia, le impostazioni di Pulizia disco e Archiviazione hanno come target solo le cartelle %temp% e Downloads . Per eliminare file più vecchi di un certo numero di giorni in un percorso di cartella "personalizzato" come la cartella Documents, è necessario utilizzare uno di questi tre metodi:

Come eliminare automaticamente i file più vecchi di N giorni in Windows

Alcuni dei metodi seguenti consentono di utilizzare la proprietà "data di creazione" o "data di modifica" dei file come base per determinare i file "più vecchi", in base alle proprie necessità.

Metodo 1. Eliminare i file più vecchi di "N" giorni utilizzando Esplora file

Utilizzando Ricerca di Windows, puoi ottenere facilmente l'elenco dei file in base a un intervallo di date selezionato o file più vecchi di una determinata data.

  1. Apri la cartella in cui desideri eliminare i file più vecchi.
  2. Fai clic sulla casella di ricerca o premi il tasto F3 sulla tastiera.
  3. Fai clic sul pulsante Data di modifica e scegli una delle opzioni a discesa, pronuncia "La settimana scorsa".

  4. Ricerca Windows filtra i risultati all'istante. Seleziona i file che desideri eliminare e premi il tasto Elimina sulla tastiera.

Importante: per impostazione predefinita, la ricerca di Windows cerca i file nella cartella corrente E in tutte le sottocartelle. Per limitare le ricerche solo alla cartella corrente, fare clic sul pulsante "Cartella corrente" sulla barra degli strumenti / barra multifunzione Ricerca.

$config[ads_text6] not found

Ricerca avanzata: operatori "Data"

Se le opzioni dell'intervallo di date preimpostate non ti soddisfano, puoi digitare una query di ricerca personalizzata. Nella casella di ricerca, digitare quanto segue per filtrare i file da un intervallo di date personalizzato:

 data modificata: 01/01/2017 .. 31/12/2017 

Trova i file che sono stati modificati durante l'intervallo di date indicato. È inoltre possibile utilizzare gli datecreated: date: datecreated: dateaccessed: o date: (soprattutto per le immagini della telecamera). Nota quella date: operatore utilizza i metadati della data (EXIF) registrati dalla telecamera.

CORRELATO: Come cercare file creati tra due date in Windows

Per trovare i file che non sono stati modificati dopo il 1 ° novembre 2017, utilizzare il simbolo minore di ( < ) con l'operatore datemodifed: come di seguito:

 DateModified: <11/1/2017 

Seleziona i file dall'elenco ed eliminali.

Suggerimento: invece di digitare manualmente l'intervallo di date, digita datemodified: o datecreated: o dateaccessed: o date: operator nella casella di ricerca e lascia che File Explorer mostri il selettore di date per te. È quindi possibile selezionare una data o un intervallo di date dal pop-up. Per specificare un intervallo di date, selezionare la prima data e trascinare il cursore sul campo appropriato.

Se si desidera eliminare automaticamente i file meno recenti anziché eseguire una query di ricerca ogni volta, è necessario creare un file batch o PowerShell.


Metodo 2: Elimina file più vecchi di "N" giorni utilizzando il prompt dei comandi

Lo strumento console ForFiles (in Windows 7, Windows 8, Windows 8.1 e Windows 10) seleziona un file o un set di file ed esegue un comando su quel file o set di file.

 Guida di Forfiles - Opzioni della riga di comando / P - Indica il percorso per iniziare la ricerca. La cartella predefinita è la directory di lavoro corrente (.). / S: indica ai file di ricorrere in sottodirectory. Come "DIR / S". / D - Seleziona i file con una data dell'ultima modifica. Ad esempio, -365 significa oltre un anno fa, -30 significa un mese fa. / C "command" - Indica il comando da eseguire per ciascun file. Le stringhe di comando devono essere racchiuse tra virgolette doppie. Il comando predefinito è "cmd / c echo @file". Le seguenti variabili possono essere utilizzate nella stringa di comando: @file - restituisce il nome del file. @fname: restituisce il nome del file senza estensione. @ext: restituisce solo l'estensione del file. @path: restituisce il percorso completo del file. @relpath - restituisce il percorso relativo del file. @isdir - restituisce "TRUE" se un tipo di file è una directory e "FALSE" per i file. @fsize: restituisce la dimensione del file in byte. @fdate: restituisce la data dell'ultima modifica del file. @ftime: restituisce l'ora dell'ultima modifica del file. 

Per visualizzare l'intero elenco di argomenti della riga di comando supportati da questo strumento, digitare FORFILES /? nel prompt dei comandi.

Per trovare ed eliminare i file più vecchi di un determinato numero di giorni usando ForFiles, apri una finestra del prompt dei comandi e digita uno dei seguenti comandi:

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c del @path" 

-o-

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c del @file" 

Quanto sopra presuppone che il percorso della cartella sia D:\My Scripts e si desidera eliminare i file più vecchi di 30 giorni. Personalizza il percorso della cartella e il numero di giorni in base alle tue esigenze.

Non verrà visualizzato alcun messaggio di output se il comando ha esito positivo. Se nessun file soddisfa i criteri specificati, verrà visualizzato il messaggio ERRORE: Nessun file trovato con i criteri di ricerca specificati .

Suggerimento aggiuntivo: per eseguire un ciclo a secco prima di tentare di eliminare i file, per verificare quali file sono interessati dai criteri specificati, sostituire il comando del con echo, come di seguito:

$config[ads_text6] not found
 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c echo @path" 

-o-

 ForFiles / p "D: \ My Scripts" / s / d -30 / c "cmd / c echo @file" 

Facoltativamente, è possibile creare un file batch con il comando sopra. O per eseguire automaticamente il comando a intervalli specificati utilizzando l'Utilità di pianificazione.

Esegui il comando automaticamente utilizzando l'Utilità di pianificazione

  1. Avvia Utilità di pianificazione.
  2. In Utilità di pianificazione, fare clic su "Libreria Utilità di pianificazione"
  3. Fai clic sul link "Crea attività" nel riquadro a destra.
  4. Nella finestra di dialogo "Crea attività", selezionare la scheda "Generale".
  5. Indica il nome dell'attività, pronuncia "Elimina i file più vecchi in I miei documenti"
  6. Fai clic sulla scheda Trigger e fai clic su Nuovo.
  7. Selezionare "In base a una pianificazione" nell'elenco a discesa sotto la casella di riepilogo a discesa "Inizia l'attività".
  8. È possibile scegliere di eseguire l'attività quotidianamente, settimanalmente o mensilmente. Se si sceglie settimanalmente, selezionare i giorni della settimana in cui si desidera attivare l'attività.
  9. Una volta fatto, fai clic sul pulsante OK.
  10. Fare clic sulla scheda "Azioni", quindi fare clic sul pulsante "Nuovo ...".
  11. Nella finestra "Nuova azione", inserisci quanto segue:
     Azione: avviare un programma Programma / script: C: \ Windows \ System32 \ ForFiles.exe Aggiungi argomenti (facoltativo): / p "% userprofile% \ Documents" / s / d -30 / c "cmd / c del @file" 

  12. Clicca OK.

Viene creata una nuova attività che, quando eseguita, elimina i file nella cartella Documents che non sono stati modificati negli ultimi 30 giorni.


Metodo 3: Elimina i file più vecchi di N giorni usando Script

Gli utenti del forum Spiceworks dispongono di script VB che possono eliminare in modo ricorsivo file più vecchi di N numero di giorni in un percorso di cartella specificato. Ecco un semplice script:

 All'errore Riprendi prossimo set oFileSys = WScript.CreateObject ("Scripting.FileSystemObject") sRoot = "C: \ Path To Old Files" 'Percorso radice per cercare i file oggi = Data nMaxFileAge = 3' File più vecchi di questo (in giorni) sarà cancellato DeleteFiles (sRoot) Funzione DeleteFiles (ByVal sFolder) Set oFolder = oFileSys.GetFolder (sFolder) Set aFiles = oFolder.Files Set aSubFolders = oFolder.SubFolders Per ogni file in aFiles dFileCreated = FormatDate (DataDate ) Se DateDiff ("d", dFileCreated, oggi)> nMaxFileAge Quindi file.Delete (True) End If Next per ogni cartella in aSubFolders DeleteFiles (folder.Path) Next End Function 

Fonte: Elimina vecchi file e sottocartelle vuote - Centro script - Spiceworks

IMPORTANTE! Lo script di cui sopra prende in considerazione la proprietà "Data creazione" degli elementi anziché "Data ultima modifica". Se si desidera eliminare file che non sono stati modificati negli ultimi N giorni, modificare la seguente riga nello script:

 dFileCreated = FormatDateTime (file.DateCreated, "2") 

per

 dFileCreated = FormatDateTime (file.DateLastModified, "2") 

Cancella i file più vecchi di 3 giorni. Tutto quello che devi fare è modificare il percorso della cartella e i parametri di durata massima del file come richiesto nello script, salvarlo con un'estensione .vbs ed eseguirlo. Si noti che lo script funziona in modo ricorsivo sulla cartella e sulle sottocartelle specificate.

Ecco un altro script che elimina i file più vecchi di N giorni e cancella automaticamente le sottocartelle vuote in modo ricorsivo. Vedere Elimina file più vecchi della massima età (in giorni) - Script Center - Spiceworks

CORRELATO: Come trovare ed eliminare rapidamente le cartelle vuote in Windows


Metodo 4: eliminare i file più vecchi di 'n' giorni usando PowerShell

La terza opzione è utilizzare PowerShell, che ha un utile cmdlet per trovare ed eliminare i vecchi file.

Avviare PowerShell ( powershell.exe) e digitare il comando seguente:

 Get-ChildItem -Path [percorso_cartella] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -Force 

Esempio:

 Get-ChildItem -Path "D: \ Reports" -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -Force 

Per utilizzare percorsi contenenti variabili di ambiente come %userprofile%\documents, utilizzare la sintassi seguente:

$config[ads_text6] not found
 Get-ChildItem -Path "$ env: userprofile \ documenti" -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -Force 

(Nota: il nome della cartella nell'esempio è la cartella Documents del tuo profilo utente. Cambia il nome della cartella e il percorso di conseguenza secondo le tue necessità.)

Poiché abbiamo usato il parametro -File, funziona solo per i file. Pertanto, le sottocartelle che non sono state scritte negli ultimi n giorni non possono essere eliminate.

Il comando sopra ha tre parti:

  1. Il cmdlet Get-ChildItem ottiene l'elenco dei file nella cartella Documenti.
  2. Quindi l'output viene reindirizzato al cmdlet Where-Object modo che venga eseguita la filtrazione, selezionando solo i file che non sono stati modificati negli ultimi x numero di giorni (in questo esempio, 30 days ).
  3. Infine, stiamo eseguendo il piping dell'output nel cmdlet Remove-Item, che a sua volta elimina i file più vecchi restituiti dai due cmdlet precedenti.

Suggerimento 1: elenca i file corrispondenti, non li elimini?

Per elencare i file e le cartelle corrispondenti senza eliminarli, rilasciare | Remove-Item Interruttore | Remove-Item .

 Get-ChildItem -Path [percorso_cartella] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} 

Suggerimento 2: eliminare gli errori durante l'eliminazione degli elementi

Per sopprimere i messaggi di errore (durante l'accesso o l'eliminazione di elementi) dalla visualizzazione nella console, aggiungere il parametro -ErrorAction SilentlyContinue .

 Get-ChildItem -Path [percorso_cartella] -File -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -ErrorAction SilentlyContinue -Force 

Elimina file vecchi e cartelle

Si noti che i comandi sopra eliminano solo i vecchi file ma non le sottocartelle che non sono state scritte negli ultimi x giorni. Per rimuovere le vecchie cartelle, rilasciare l'argomento -File tra i comandi precedentemente spiegati.

Esempio:

 Get-ChildItem -Path "$ env: userprofile \ documents" -Recurse -Force | Where-Object {($ _. LastWriteTime -lt (Get-Date) .AddDays (-30))} | Remove-Item -Force 

(Consultare: Documentazione del cmdlet Get-ChildItem sul sito Microsoft)

Importante: il parametro -Recurse indica a PowerShell di ottenere i file in modo ricorsivo (nelle sottodirectory). Per impedire la ricerca di file nelle sottocartelle, rimuovere l'opzione -Recurse modo che venga elaborata solo la cartella corrente.

Articoli Correlati