«

»

Giu 15

Cancellare vecchi files per data in Windows

Lavorando sui servers o su macchine di produzione ci imbattiamo spesso nella necessità di dover mantenere entro un certo limite di occupazione disco i files di log che vengono creati sul file system di una macchina da vari servizi o programmi.

In pratica il problema di solito è quello di cancellare i files più vecchi di una certa data (esempio quelli oltre i 3 mes) mantenendo però nello stesso percorso quelli più recenti in modo da avere si uno storico dell’accaduto ma senza doverci preoccupare di riempire il disco con questi dati.

 

Molti si affidano a script vari in powershell o vba per risolvere la problematica, ma in realtà volendo si può fare tutto da riga di comando (e quindi di conseguenza con un semplice file batch .BAT o .CMD).

E visto che a noi piacciono le cose semplici e funzionali vediamo il comando da utilizzare per questa esigenza che è FORFILES e si trova in tutte le più recenti versioni di Windows.

Tornando al nostro esempio l’esigenza era quella di cancellare i files di log più vecchi di 3 mesi (90 giorn)i dal nostro disco, la sintassi da usare quindi sarà :

FORFILES /P “C:\LOGS” /M *.LOG /D -90 /C “CMD /C DEL @PATH”

in pratica richiamiamo il comando FORFILES dal nostro batch schedulato ogni domenica che provvede a cancellare i log che trova nel percorso specificato più vecchi di 3 mesi, la spiegazione delle opzioni che stiamo utilizzando è :

/P percorso da controllare sul disco
/M maschera dei files da considerare (solo quelli con estensione .LOG)
/D data dei files da considerare (-90 sta appunto per data oltre i 3 mesi rispetto all’attuale)
/C comando da eseguire tra virgolette, nel nostro caso è un DEL , @PATH è il percorso completo del file restituito dal comando FORFILES

Quindi con una sola riga di comando riusciamo a risolvere in modo veloce e brillante la nostra esigenza.

; – )

Visto che la cancellazione da riga di comando non passa dal cestino vi consiglio prima di metterla in produzione di testarla modificando il comando DEL con ECHO in questo modo avrete un’anteprima dei files selezionati dal comando FORFILES e potrete essere sicuri che state scegliendo per la successiva cancellazione SOLO i files che vi interessano veramente !

Quindi seguendo sempre il nostro esempio il comando da usare per il controllo preventivo sarà :

FORFILES /P “C:\LOGS” /M *.LOG /D -90 /C “CMD /C ECHO @PATH” | MORE

Il comando FORFILES oltre che per la cancellazione può essere usato anche per qualsiasi altra operazione di selezione sui files a cui poi andrà applicato un altro comando, per maggiori informazioni sulla sintassi del comando FORFILES potete digitare dalla riga di comando (CMD.EXE) :

FORFILES /?

oppure fare riferimento a questi articoli tecnici :

https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/forfiles

https://en.wikipedia.org/wiki/Forfiles

 

1 comment

  1. Giovanni

    Funzione molto utile che fin ora non conoscevo. Mi capita moltissime volte di avere cartelle piene di troppe versioni di file su cui lavoro o anche di log stessi. Di sicuro farò un .bat per entrambi i casi per risparmiare tempo. Grazie della guida!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Puoi usare i seguenti tag ed attributi HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

code