Try building a WMI query or WSH FSO function that enumerates the subfolders
from the root folder you're checking. Then for each subfolder run your
routine that does the file cleanup. Plagiarized from the Windows 2000
Scripting Guide:
strRootFolder = "c:\test"
strComputer = "."
Set objWMIService = GetObject("winmgmts:"_
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colSubfolders = objWMIService.ExecQuery _
("ASSOCIATORS OF {Win32_Directory.Name='" & strRootFolder & "'} " _
& "WHERE AssocClass = Win32_Subdirectory " _
& "ResultRole = PartComponent")
For Each objFolder in colSubFolders
'Run your subroutine to purge old files here
Next
"Dave Allen" <nomail@namail.com> wrote in message
news:O3Vw0SdCIHA.4752@TK2MSFTNGP04.phx.gbl...
>I need a script that will delete files and folders older then 30 days.
> I found this script and it works except it does not scan sub-folders
>
> http://blogs.msdn.com/benjguin/archi...es-script.aspx
>
> Does anyone know how to make this scan sub-folders?
>
>
> cscript DeleteOldFiles.vbs "C:\Test" 30
>
>
> option explicit
>
> Call DoTheJob()
> WScript.Echo "--- end of script execution ---"
>
> Sub DoTheJob
> dim limitDate
> dim formattedLimitDate
> dim folder
> dim strComputer
> dim objWMIService
> dim colFileList
> dim objFile
> dim nbFiles
> dim totalFiles
> dim nbErrors
> dim result
> dim nbDays
>
> if WScript.Arguments.Count <> 2 then
> WScript.Echo "usage : DeleteOldFiles.vbs <folder> <nb of days ago>"
> WScript.Echo "sample: DeleteOldFiles.vbs C:\Windows\temp 90"
> Exit Sub
> end if
>
> folder = WScript.Arguments(0)
> nbDays = WScript.Arguments(1)
>
> 'calculate and format limit date
> limitDate = DateAdd("d", -1 * nbDays , Date)
>
> formattedLimitDate = DatePart("yyyy", limitDate)
>
> if DatePart("m", limitDate) < 10 then
> formattedLimitDate = formattedLimitDate & "0"
> end if
> formattedLimitDate = formattedLimitDate & DatePart("m", limitDate)
>
> if DatePart("d", limitDate) < 10 then
> formattedLimitDate = formattedLimitDate & "0"
> end if
> formattedLimitDate = formattedLimitDate & DatePart("d", limitDate)
>
> 'show what will be done
> WScript.Echo "Will remove files from " & folder & " with a date older
> than " & formattedLimitDate & " (" & nbDays & " days ago)"
>
>
> 'Get the files and delete the old ones
> strComputer = "."
>
> Set objWMIService = GetObject("winmgmts:" _
> & "{impersonationLevel=impersonate}!\\" & strComputer &
> "\root\cimv2")
>
> Set colFileList = objWMIService.ExecQuery _
> ("ASSOCIATORS OF {Win32_Directory.Name='" & folder & "'} Where " _
> & "ResultClass = CIM_DataFile")
>
> nbFiles = 0
> totalFiles = 0
> nbErrors = 0
>
> For Each objFile In colFileList
> totalFiles = totalFiles + 1
> if objFile.CreationDate < formattedLimitDate then
>
> result = objFile.Delete()
>
> WScript.Echo objFile.Name & " - " & objFile.CreationDate & ".
> Delete Result: " & result
> if result = 0 then
> nbFiles = nbFiles + 1
> else
> nbErrors = nbErrors + 1
> end if
> end if
> Next
>
> 'Show the result
> Wscript.Echo "Total files in folder: " & totalFiles
> WScript.Echo "Deleted files: " & nbFiles
> WScript.echo "Errors: " & nbErrors
> End Sub
>
>
>