« Torna alla lista delle News

15
nov
2010

Script batch bat per eliminare cancellare file piu vecchi di un certo numero di giorni


Il comando “forfiles” è estrammente utile quando si voglio shedulare delle operazioni da eseguire su uno o più file.
Lo trovate nella cartella "C:\Windows\System32" di un Window Server 2003.
Se vi serve utilizzarlo anche su Windows XP, Vista o Seven dovete copiarlo da qui.

Questo è per esempio un semplice script per eliminare i file che hanno un certo numero di giorni da una cartella a vostra scelta.
Lo script è il seguente:
Forfiles /p C:\temp /s /m *.* /d -5 /c "cmd /c del /q @path"

Modificare il numero 5 per specificare il nuemro di giorni di età dei files e la directory "c:\temp" per specificare la vostra cartella.

Per vedere se funziona, modificare lo script in questo modo:
Forfiles /p c:\backup /s /m *.* /d -5 /c "Cmd /C Echo 0x22@Path\@File0x22"
In questo modo li elenca solamente..

Un altro esempio di utilizzo del comando simile al primo ma che questa volta cancella dalla cartella “drive:\folder”, solo i file jpg più vecchi di 7 giorni.

c:\windows\system32\Forfiles /p drive:\folder /s /m *.jpg /d -7 /c “cmd /c del /q @path”

Con alcuni comendi esplicati:
p = path
s = cerca anche nelle subdirectory del path principale
m = file con criteri (mark) specificati
d = ultima modifica più vecchia di (giorni)
c = esegui il comando

Uno script come questo può essere utile, per cancellare immagini o filmati di telecamere e/o sistemi di videosorveglianza (sia per legge che per motivi di spazio), dopo un periodo prestabilito


Qui trovate invece tutti i parametri se volete smanettarci un po':
http://technet.microsoft.com/en-us/library/cc753551%28WS.10%29.aspx


« Torna alla lista delle News

Fede79 - ha scritto il 05/06/2012 alle 10.35
Salve,
ho provato a fare come dice lei nell'articolo (sostituendo gli / con le - perchè la mia versione di forfiles non prevedeva gli slash), ma il risultato è solo un centinaio di volte la scritta "Impossibile trovare C:\Temp\@path". Anche mettendo @files il risultato non cambia.
Questa è la stringa che ho usato:

FORFILES -pC:\Temp -s -m*.avi -d-7 -c"cmd /c del /q @path"

Dove sbaglio?

Grazie.