Link to home
Start Free TrialLog in
Avatar of ammounpierre
ammounpierre

asked on

Delete old files based on date ?

I have files that I need to get rid of ...
But I would like to delete the files before a certain date (created).
can I specify a range ?
let's say delete files between 10Jan and 14Jan
thanks.
Avatar of Aard Vark
Aard Vark
Flag of Australia image

Definitely want to delete files created before a certain date, or modified before a certain date? For example, a text file created on the 01/01/2009 could have been modified on 02/02/2009, but still created at the older date. If you want to get rid of files which aren't being modified for a certain amount of time (using batch), try using the ForFiles command (http://www.ss64.com/nt/forfiles.html). I'm not sure if there's any easy way to delete files created before a certain date in a batch file (VBS or Powershell could do this easily).

Might also be worth looking at https://www.experts-exchange.com/questions/20947290/Delete-All-Contents-of-Folder-Older-than-7-Days.html.
SET DIRECTORY=c:\temp
:: To test use ForFiles /p %DIRECTORY% /S /M *.* -d -16/09/2008 -c "cmd /c @echo @path"
ForFiles /p %DIRECTORY% /S /M *.* -d -16/09/2008 -c "cmd /c @del /q @path"

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of t0t0
t0t0
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
By the way, you can also call the batch file from within another batch file. But remember to pass it both dates as before ie,

   :
   CALL delrange 26/01/2008 28/02/2009
   :

NOTE: I've condensed the last line.... otherwise it's the same as the code above.

@echo off
setlocal enabledelayedexpansion
set d1=%1
set d2=%2
set d1=!d1:~6,4!!d1:~3,2!!d1:~0,2!
set d2=!d2:~6,4!!d2:~3,2!!d2:~0,2!

for %%a in (*.*) do (
   set fn=%%a
   set fd=%%~ta
   set fd=!fd:~6,4!!fd:~3,2!!fd:~0,2!
   if !fd! GEQ !d1! if !fd! LEQ !d2! del !fn!
)