Solved

How do delete a folder after X days old

Posted on 2014-11-08
18
163 Views
Last Modified: 2014-11-09
Using Windows XP, I have the following batch file:

@echo off
cls

SET month=%DATE:~4,2%
SET day=%DATE:~7,2%
SET year=%DATE:~-4%
SET hour=%time:~0,2%
SET sec=%time:~3,2%
SET millis=%time:~6,2%


set folder=%year%_%month%%day%_%hour%%sec%

rem remove spaces from single digit values
set folder=%folder: =%

mkdir %folder%

:Done


This makes a folder based and named based on date and time.  This folder will later be populated for backup purposes.  Of course this can get rather large so I would like to also add to the batch to check for any folders X days old and then delete those folders.

Is this possible?

Thank you
0
Comment
Question by:thandel
  • 10
  • 5
  • 2
  • +1
18 Comments
 
LVL 23

Expert Comment

by:NVIT
ID: 40430193
Would this help? Change 15 to the DaysOld you want.

FORFILES /d -15 "cmd /c if @isdir==TRUE del /q /s /f @file"

Open in new window

0
 
LVL 23

Expert Comment

by:Eirman
ID: 40430209
Unless you have a particular reason to go the DOS route to delete older backups, it might make more sense to go for a backup program that keeps a certain number (that you specify .. e.g. 10) of backups and when it created a new backup, the oldest one is deleted.

This is just one example of such a program ...
http://www.kls-soft.com/klsbackup/
0
 

Author Comment

by:thandel
ID: 40430347
Thanks NewVillageIT... will this work for a folder/directory?
0
 

Author Comment

by:thandel
ID: 40430349
I'm getting an error that Forfiles is not a recognizable command.
0
 

Author Comment

by:thandel
ID: 40430361
I have Windows XP so  I don't think XP supports this command.
0
 
LVL 23

Expert Comment

by:NVIT
ID: 40430381
The @isdir==TRUE option checks for directories.

Before doing your real folders, test against an area that has some folders and files.

I haven't confirmed this but, it's in the Windows 2003 Resource Kit at http://www.microsoft.com/en-us/download/details.aspx?id=17657

XP versions here: http://www.petri.com/download_windows_xp_reskit_tools.htm
0
 

Author Comment

by:thandel
ID: 40431270
What is that 12MB installation going to do, install several .exe tool files?  Can you attach the forfile to this?  I only need that and not the other 12+MB supporting files.
0
 

Author Comment

by:thandel
ID: 40431277
OK never mind I installed the kit but forfiles was not part of the installation.
0
 
LVL 23

Assisted Solution

by:NVIT
NVIT earned 250 total points
ID: 40431293
Attached. Rename .txt to .exe
forfiles.txt
0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 15

Expert Comment

by:ZabagaR
ID: 40431295
0
 

Author Comment

by:thandel
ID: 40431378
Thanks now getting an error invalid argument/option  with forfiles
0
 
LVL 15

Accepted Solution

by:
ZabagaR earned 250 total points
ID: 40431518
I already had a batch script to do this from a while back, I'll just repost below:
I keep 14 days and my path to search is C:\MyFolderPath

@echo off
setlocal

set DAYS_TO_KEEP=-14
set BACKUP_PATH=C:\MyFolderPath

forfiles /d %DAYS_TO_KEEP% /p "%BACKUP_PATH%" /c "cmd /c if @isdir==TRUE rd /s /q @path"
0
 
LVL 23

Expert Comment

by:NVIT
ID: 40431532
thandel,

Did you get it working? If not, can you post a sample code?
0
 

Author Comment

by:thandel
ID: 40431856
Getting an error that "P" can not be empty.  Here is my code:

@echo off
cls

SET month=%DATE:~4,2%
SET day=%DATE:~7,2%
SET year=%DATE:~-4%
SET hour=%time:~0,2%
SET sec=%time:~3,2%
SET millis=%time:~6,2%
SET DAYS_TO_KEEP=-1


set folder=%year%_%month%%day%_%hour%%sec%
rem remove spaces from single digit values
set folder=%folder: =%

set set BAKPath=C:\Documents and Settings\Todd\My Documents\DbBAK\%folder%

mkdir %folder%
cd %folder%

forfiles /d %DAYS_TO_KEEP% /p "%BAKpath%" /c "cmd /c if @isdir==TRUE rd /s /q @path"
0
 

Author Comment

by:thandel
ID: 40431857
Sorry cut n' paste error but didn't resolve the P variable error:

Should be: set BAKPath=C:\Documents and Settings\Todd\My Documents\DbBAK
0
 

Author Comment

by:thandel
ID: 40431858
I have it working... my set command had typos "set set".... working now!

Thanks
0
 

Author Comment

by:thandel
ID: 40431860
Does everyone agree that a 50/50 split is fair?    Ultimately used ZabagaR's forfile line
0
 
LVL 23

Expert Comment

by:NVIT
ID: 40431918
OK, thandle.
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

Most of the time we are in fix when all of sudden our systems behave weirdly.  Such problems cost time and effort... so it's best to take some preventive actions so that we can avoid such issues or overcome such problems more easily. Preventive M…
Can I legally transfer my OEM version of Windows to another PC?  (AKA - Can I put a new systemboard in my OEM PC?) Few of us are both IT and legal experts but we all have our own views of Microsoft's licensing rules and how they apply.  There are…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now