Categories
Geeky/Programming

ForFiles – Delete files older than X amount of Days

Windows 2003 – ForFiles

FORFILES /P C:MyPath /S /M log*.xml /D -30 /C "cmd /c del @file"

/S – look at subdirectories

log*.xml – that is the file pattern, you could have it be like *.txt for example

/D -30 = files greater than 30 days

/C – thats the command you want to run

this is pretty much a one line command that could replace a ton of vbScripts, batch files, and other apps I have seen over the years to clean up files. Something for every sys admin’s toolbelt.

By Steve Novoselac

Director of Digital Technology @TrekBikes, Father, Musician, Cyclist, Homebrewer

23 replies on “ForFiles – Delete files older than X amount of Days”

I am using the forfiles.exe version:5.2.3790.0 (srv03_rtm.030324-2048) in windowsXP.
I used your(ForFiles – Delete files older than X amount of Days Feb.27, 2007 in Geeky/Programming)above command and found it didn’t work in my computer but when I tested the following command in batch file
————————————————-

@ECHO OFF
ECHO ******www.moshiur.com***********
forfiles /p C:test22test2 /s /m *.* /d -3 /c “cmd /c del echo @FILE”
EXIT

————————————————-

I found that it was working fine including files in sub directories in my given path but thing is that it couldn’t delete any subdirectories. Do you have advice ?

Like

mine in the post works, it is just that wordpress screws up the “quotes” so when you copy/paste it , it doesnt work.

if you want to remove directories, try the cmd line “rd”

such as rd /s /q myfolder

Like

Steve,

Thank you so much for the info on FORFILES!!

Its exactly what I was looking for and it works great!!

Thanks again.

Mark

Like

Hi,I tried to running this in my system(WIN-XP operating system), for some reason it is NOT deleting any files.I didn't had forfiles.exe in my system, I downloaded from the net and placed it in D:forfiles.exe and tried to run forfiles command from command promt, but no success.Thanks

Like

Hi,I tried to running this in my system(WIN-XP operating system), for some reason it is NOT deleting any files.I didn't had forfiles.exe in my system, I downloaded from the net and placed it in D:forfiles.exe and tried to run forfiles command from command promt, but no success.Thanks

Like

I have a problem where it prompts me to delete folders that have “.” in the folder name. For example foldername.06.27.2010 Is there any way to suppress that? it stalls the script until you answer yes or no.

Like

Not sure if you’ve resolved this. I had the same problem and it was due to me copying the text from above. The quotes were formatted. re-type the quotes in dos etc and it should work.

Like

The problem I am experiencing is that the forfiles batch file acts as it should for 5 days (does not delete any files as I am using /D -5), but once a single file gets to 5 days old, all the files in the directory are deleted – including those only 1, 2, 3 or 4 days old at the time.

FORFILES /P “B:NovaBackups” /S /M *.nbd /D -5 /C “CMD /C DEL /F /Q @FILE”

Any ideas on what I might try differently?

TIA

Like

Well I guess I was just having a senior DUH moment!  The batch file runs at night as do the daily backups – batch file first and then backup run.  When the first file hits >5 days old it is deleted.  But the backup program considers that file to be the first in a set, even though each backup run is a complete backup and not an incremental/differential run after a full backup.  So since the backup program doesn’t see what it considers to be the requisite 1st backup in a set, it creates the 1st backup in what it considers a new series and deletes the remaining backups in the old set.  Since the batch file and  backup run happen sequentially, and the only place I knew there was a delete command was in the forfiles batch file, I assumed I had done something wrong with that.  I figured I needed to come clean and save anyone spending time on my brain fart.

Like

I’m having the same issue, I suspect it fines a file that’s 5 days old, and runs the del *.bak command on the folder, I’d suspect you’d need to specify the ‘date of the file in the actual delete statement as well. Anybody run into this? I set it up to delete backups after 3 days, and every 3 days, it removes them all.

Like

I think this fixed it
after the
forfiles /p “F:BackupsDailyBLAH” /m *.bak /d -3 /c  “cmd /c if @fdate>=3 del *.bak”  >> E:elitedbMSSQLTaskLogDeleteFromBK.log 
This also pipes output to the folder.

Like

Works perfect on win2k8 r2. A handy one for deleting folders rather than just files:  ForFiles /P “C:mytopdirectory”  /D -1 /C “CMD /C if @ISDIR==TRUE echo RD /S /Q @FILE &RD /S /Q @FILE”

Like

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.