I need to write a script that deletes all files, and files within sub folders of a defined specific path that have not been accessed or modified with 7 days.
It also has to have some logging around it for audit trails...
I have written most of it, but I am stuck on how to make it loop through the sub folders (not just sub folders, but all sub folders within sub folders within sub folders etc etc etc) and delete there files too. At the moment it is just deleting the files within the folder that I have defined.
I also need a way to define a few folders in the target folder that should not have it, or it's contents deleted.
Here is my code so far:
' Printroom VBscript to delete files in a particular directory after seven days
' Only deletes files that have not been modified and accessed in seven days
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''' Settings for configuration '''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This setting defines where the log file is placed.
Wheretoplacelogfile = "Z:\Templates For DVD's, CD's and Tabs\Name Plate templates\"
' This setting defines how many days the file needs to of been un-modified and not accessed before deletion
NumberOfDays = -7
' This setting defines what folder needs to be cleaned up
FolderForCleaning = "Z:\Templates For DVD's, CD's and Tabs\Name Plate templates\"
dim FoldersToNotDelete (1)
FoldersToNotDelete (0) = "Name Plate templates"
'FoldersToNotDelete (1) =
'FoldersToNotDelete (2) =
'FoldersToNotDelete (3) =
'FoldersToNotDelete (4) =
'FoldersToNotDelete (5) =
'FoldersToNotDelete (6) =
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''' End of settings '''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
LocalDate = Day(Now()) & "-" & Month(Now()) & "-" & Year(Now())
LocalTime = right("00" & Hour(NOW()), 2) & ":" & right("00" & Minute(NOW()), 2) & ":" & right("00" & Second(NOW()), 2)
Dim objNetwork
Set objNetwork = CreateObject("WScript.Network")
Wheretoplacelogfile = Wheretoplacelogfile & "Printroom Deletion Log File created by " & objNetwork.UserName & " " & LocalDate & ".txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set FileWriter = fso.CreateTextFile(Wheretoplacelogfile , True)
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
FileWriter.WriteLine("Printroom clean-up code log file")
FileWriter.WriteLine("Generated on the " & LocalDate & " at " & LocalTime)
FileWriter.WriteLine("Log file generated by " & objNetwork.UserName & " using computer name " & objNetwork.ComputerName & " on the " & objNetwork.UserDomain & " domain" )
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
FileWriter.WriteLine(" ")
FileWriter.WriteLine(" ")
FileWriter.WriteLine(" ")
Dim oFSO, oFolder, oFiles, oFile
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(FolderForCleaning)
Set oFiles = oFolder.Files
FileWriter.WriteLine("######################################################################################")
FileWriter.WriteLine("Deleting contents of folder: " & oFolder.Name)
FileWriter.WriteLine("######################################################################################")
for each oFile in oFiles
On Error Resume Next
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
FileWriter.WriteLine("File: " & oFile.Name)
FileWriter.WriteLine("File located: " & oFile.Path)
FileWriter.WriteLine("The file size is: " & oFile.Size & "Bytes" & " and is a " & oFile.Type)
FileWriter.WriteLine("Last modified: " & oFile.DateLastModified)
FileWriter.WriteLine("Last Accessed: " & oFile.DateLastAccessed)
if (oFile.DateLastModified < DateAdd("d", NumberOfDays, Now()) and oFile.DateLastAccessed < DateAdd("d", NumberOfDays, Now())) then
FileWriter.WriteLine("File confirmed for deletion...")
FileWriter.WriteLine("Deleting file...")
oFile.Delete True
FileWriter.WriteLine("The file has now been deleted ")
else
FileWriter.WriteLine("File has been accessed or modified recently and is therefore active...")
FileWriter.WriteLine("Skipping deletion")
end if
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
next
next
' Probably never going to happen, but best to just check the data again incase it took longer then a day, lol...
LocalDate = Day(Now()) & "-" & Month(Now()) & "-" & Year(Now())
LocalTime = right("00" & Hour(NOW()), 2) & ":" & right("00" & Minute(NOW()), 2) & ":" & right("00" & Second(NOW()), 2)
FileWriter.WriteLine(" ")
FileWriter.WriteLine(" ")
FileWriter.WriteLine(" ")
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
FileWriter.WriteLine("Completed on the " & LocalDate & " at " & LocalTime)
FileWriter.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
FileWriter.Close
Do you think you could help me? This is my first attempt at VB script and appreciate any help.


Sign In
Create Account


Back to top









