Last active
February 2, 2016 17:40
-
-
Save mreschke/34359997d795b5564498 to your computer and use it in GitHub Desktop.
Delete old Windows files based on age and recursion depth
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
' A windows vbscript to delete old files. Simply make a .bat file and thow it in Windows scheduled tasks | |
' Example, same file in C:\batch\DeleteOldFiles.vbs and make C:\batch\CleanupThisServer.bat: | |
' | |
' cd C:\batch | |
' cscript DeleteOldFiles.vbs "D:\SMTPExpress\EasyMail SMTP Express\logfiles" 90 | |
' cscript DeleteOldFiles.vbs "D:\DynaMailPDF\" 720 txt 2 (this one uses max depth =2) | |
'-------------------------------------------------------------------------------------- | |
' Objective: To delete old files from a given folder and all subfolders below | |
' Created by: MAK | |
' Created Date: June 21, 2005 | |
' Usage: cscript deloldfiles.vbs c:\dba\log 3 (delete files older than 3 days) | |
'-------------------------------------------------------------------------------------- | |
' mReschke 2012-04-05 added option to delete only by extension and limit recursion to maxdepth | |
' Usage: cscript deloldfiles.vbs c:\dba\log 3 csv (delete only .csv files) | |
' Usage: cscript deloldfiles.vbs c:\dba\log 3 csv 1 (delete only .csv files in parent dir (no recursion)) | |
' Usage: cscript deloldfiles.vbs c:\dba\log 3 csv 2 (delete only .csv files in parent dir and one subdir (2 maxdepth recursion)) | |
'-------------------------------------------------------------------------------------- | |
Set objArgs = WScript.Arguments | |
FolderName =objArgs(0) | |
Days=objArgs(1) | |
'mReschke Extension and MaxDepth | |
for each item in objArgs:x = x + 1:next | |
ext="" : maxdepth = 0 | |
if x >= 3 then ext=lcase(objArgs(2)) | |
if x >= 4 then maxdepth=cint(objArgs(3)) | |
'MsgBox("Ext: " & ext & ", maxdepth: " & maxdepth) | |
set fso = createobject("scripting.filesystemobject") | |
set folders = fso.getfolder(FolderName) | |
datetoday = now() | |
newdate = dateadd("d", Days*-1, datetoday) | |
wscript.echo "Today:" & now() | |
wscript.echo "Started deleting files older than :" & newdate | |
wscript.echo "________________________________________________" | |
wscript.echo "" | |
recurse folders, ext, maxdepth, 0 | |
wscript.echo "" | |
wscript.echo "Completed deleting files older than :" & newdate | |
wscript.echo "________________________________________________" | |
sub recurse( byref folders, byval ext, byval maxdepth, byval recursion_count ) | |
set subfolders = folders.subfolders | |
set files = folders.files | |
recursion_count = recursion_count + 1 | |
wscript.echo "" | |
wscript.echo "Deleting Files under the Folder:" & folders.path | |
'MsgBox("Recursing Now: " & recursion_count) | |
wscript.echo "__________________________________________________________________________" | |
for each file in files | |
if ext="" or right(lcase(file.name),len(ext))=ext then | |
if file.datelastmodified < newdate then | |
wscript.echo "Deleting " & folders.path & "\" & file.name & " last modified: " & file.datelastmodified | |
on error resume next | |
'Delete File | |
file.delete | |
end if | |
end if | |
next | |
'Recurse into directory if enabled | |
'mReschke Disable Recursion | |
for each folder in subfolders | |
'MsgBox("Just Before: " & recursion_count & ", max: " & maxdepth) | |
if recursion_count <= maxdepth-1 or maxdepth = 0 then | |
'MsgBox("Running recursion because " & recursion_count & " <= " & maxdepth) | |
recurse folder, ext, maxdepth, recursion_count | |
end if | |
next | |
set subfolders = nothing | |
set files = nothing | |
recursion_count = recursion_count - 1 | |
end sub |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment