Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 686
  • Last Modified:

VBS: Delete any files that are > 5 days old ANDF 0 kb filesize

Hello, I need a vbs that will scan a folder and delete any files that are > 5 days old with 0 kb filesize. Can anyone offer any suggestions?
Dim fso, objShell
'===================================
'Start of Sub-routine
Sub fFIND(oFolder)
	DIM oFile
	DIM oSdate, oCdate,objFile
 
	'Look at each file in the current folder
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objFile = objFSO.GetFile((oFile.Name), "C:\myfolder\Log20*")
	
	For Each oFile in oFolder.Files
		
		'Check for a file of the format *LOG20*.TXT
		if inStr(uCase(oFile.Name), "LOG20") > 0 and uCase(right(oFile.name,4)) = ".TXT" then 
			oSdate = DateValue(oFile.DateLastModified)
			oCdate = DateDiff("d", oSdate, Date)
												
			'Log and delete *LOG20*.TXT files older than 15 days
	if oCdate >= 15 And objFSO.size < 2 Then
			Call LoggerF(oFile.Path)
		     	oFile.Delete True
			End if		
		
		end If
 
	Next
 
End Sub
'======================================
 
'=====================
'Write Log Sub
 
 
Sub LoggerF(fPath)
	DIM oFSO, oStream, oFile, WshNetwork
 
	On Error Resume Next
 
	Set WshNetwork = WScript.CreateObject("WScript.Network")
 
	Set oFSO = CreateObject("Scripting.FileSystemObject")
	Set oFile = oFSO.GetFile("CleanupLog.txt")
	Set oStream = oFile.OpenAsTextStream(8, 0)
 
	oStream.Write VbCrLf & Ucase(WshNetwork.UserName) & " deleted " & fPath & " at " & Now
	oStream.Close
	
	set oStream = Nothing
	set oFile = Nothing
	set oFSO = Nothing
	set WshNetwork = Nothing
 
End Sub
'=====================
 
on error resume Next
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set objShell = Wscript.CreateObject("Wscript.Shell")
 
'Call the Sub-routine that searches and deletes the files
fFIND fso.GetFolder("C:\myfolder")
objShell.LogEvent EVENT_SUCCESS, "Log file cleanup finished at " & date
Wscript.Quit
set objShell = Nothing
set fso = Nothing

Open in new window

0
MonMuscRS
Asked:
MonMuscRS
  • 2
  • 2
1 Solution
 
TakedaTCommented:
Is there something wrong in the code you provided?  Do you get errors when its ran?  If so, can you tell what lines the errors are on?
0
 
MonMuscRSAuthor Commented:
No errors, no results. The files are not being eliminated.
 
0
 
Alpha AuCommented:
please remark the
on error resume Next
and run again. (for debug)

all error are hidden so that you found no error.
0
 
MonMuscRSAuthor Commented:
No error still when I commented out the "On Error Resume Next" but when I commented out the file size dependent logic, it worked. I really would like to only remove the 0 kb files, can you see a flaw in my logic?
Thank you for your time!
0
 
TakedaTCommented:
If this is where your file size logic is:
      if oCdate >= 15 And objFSO.size < 2 Then

Shouldnt it read
      if oCdate >= 15 And oFile.size < 2 Then
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now