Microsoft
Software
Hardware
Network
Question : Autoexec.bat routine to delete files based upon date in a specific directory
Windows CE- need to create a dos routine that will run in the autoexec.bat file. This routine needs to simply scan a preset directory for files older than (current date minus XX days) and delete those files. nothing else. simple.
Answer : Autoexec.bat routine to delete files based upon date in a specific directory
The following link may be of interest
http://www.computing.net/p
rogramming
/wwwboard/
forum/
1371
7.html
In any case here is the code. Save it as DELOLD.BAT, and put it in the directory to be parsed. In your autoexec put a command to run DELOLD.BAT /90 and you *should* be dandy...
@echo off
SET OLDERTHAN=%1
IF NOT DEFINED OLDERTHAN GOTO SYNTAX
set FileDir=%~2
if "%FileDir%"=="" set FileDir=.
for /f "tokens=2" %%i in ('date /t') do set thedate=%%i
set mm=%thedate:~0,2%
set dd=%thedate:~3,2%
set yyyy=%thedate:~6,4%
set /A dd=%dd% - %OLDERTHAN%
set /A mm=%mm% + 0
:LOOPDATE
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31
:SET31
set /A dd=31 + %dd%
goto LOOPDATE
:SET30
set /A dd=30 + %dd%
goto LOOPDATE
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto LOOPDATE
:SET29
set /A dd=29 + %dd%
:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
for %%i in (%FileDir%\*.*) do (set FileName=%%i call :PROCESSFILE %%~ti)
set mm=
set yyyy=
set dd=
set thedate=
goto EXIT
:SYNTAX
ECHO.
ECHO USAGE:
ECHO DELOLD X [Dir]
ECHO Where:
echo X is the number of days previous to Today.
echo Dir is the optional directory where files exist. Defaults to current directory.
ECHO.
ECHO EX: "DELOLD 5" Deletes files older than 5 days.
echo "DELOLD 120 c:\temp Deletes files from the c:\temp directory that are older
echo than 120 days.
GOTO EXIT
:PROCESSFILE
set temp=%1
set fyyyy=%temp:~6%
if /I %fyyyy% LSS 100 set fyyyy=20%fyyyy%
if /I %fyyyy% GTR 2069 set fyyyy=19%temp:~6%
set fmm=%temp:~0,2%
set fdd=%temp:~3,2%
:: +*************************
**********
**+
:: | This is where the files are deleted |
:: | Change the ECHO command to DEL to |
:: | delete. ECHO is used for test. |
:: +*************************
**********
**+
if /I %yyyy%/%mm%/%dd% GEQ %fyyyy%/%fmm%/%fdd% (echo %FileName%)
set temp=
set fyyyy=
set fmm=
set fdd=
:EXIT
Random Solutions
Is Access a bit of a pig?
Remove permissions to create live meeting on OCS 2007 R2
Get Columnname of a matched value
MS Power Point 2007 stops runing
Only 60Hz Available, Even With Driver, Spec is 75. I Can Work Around That - Should I?
EBS 2008 Server Problem
How to determine why my MFC application requires Microsoft Office dlls to run ??????
~~HELP~~in table-level validation expression
Linq to Sql union with constant values
What is the right way to clone a Windows Server 2003 server, using imaging software?