Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

VB script, delete files older than 7 days, but skip specific files

Posted on 2009-05-20
5
Medium Priority
?
906 Views
Last Modified: 2012-05-07
Hi I want to use this code that deletes files older than 7 days but add logic that doesn't delete any *-Init.log files. I know this has to be pretty simple, but I'm rusty with vb script.

Thanks


Dim strPath = "C:\Temp\"
Dim iDays = 7
 
Set objFolder = objFSO.GetFolder(strPath)
For Each objItem In objFolder.Files
   If objItem.DateLastModified < date() - iDays
	if objIte then
      objFSO.DeleteFile(strPath & objitem.Name)
   End If
Next

Open in new window

0
Comment
Question by:bmlguy
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
5 Comments
 
LVL 26

Expert Comment

by:Pber
ID: 24433379
Try this:
strPath = "C:\Temp\"
iDays = 7
mask = "-init.log"
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Set objFolder = objFSO.GetFolder(strPath)
For Each objItem In objFolder.Files
   If objItem.DateLastModified < date() - iDays then
		WScript.Echo(objitem.Name)
		If InStr(1,lcase(objitem.Name),lcase(mask)) Then
			WScript.Echo(objitem.Name & " Deleted.")
			objFSO.DeleteFile objItem
		End if     
   End If
Next

Open in new window

0
 
LVL 26

Expert Comment

by:Pber
ID: 24433388
woops, hang on, reverse logic
 
0
 
LVL 26

Accepted Solution

by:
Pber earned 2000 total points
ID: 24433401
Try this:
 

strPath = "C:\Temp\"
iDays = 7
mask = "-init.log"
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Set objFolder = objFSO.GetFolder(strPath)
For Each objItem In objFolder.Files
   If objItem.DateLastModified < date() - iDays then
		WScript.Echo(objitem.Name)
		If InStr(1,lcase(objitem.Name),lcase(mask)) = 0 Then
			WScript.Echo(objitem.Name & " Deleted.")
			objFSO.DeleteFile objItem
		Else
			WScript.Echo(objitem.Name & " not Deleted.")
		End if     
   End If
Next

Open in new window

0
 
LVL 26

Expert Comment

by:Pber
ID: 24433641
Here's some other references to manipulating files:
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_23249766.html
 
 

'I've also used a subroutine like this to delete files older than 24 hours from our MFD scanner.  It runs as a scheduled task once a day.
 
objStartFolder = "e:\scans"         'folder to monitor
intHoursToKeep = 24                 'change this to modify the hours to keep
 
' ********************* Do not modify below this line *********************
strNOW = Now
 
'title
WScript.Echo("Folder,File,Last Modified,Present time,Status")
 
'Process files in root of start folder
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(objStartFolder)
Set colFiles = objFolder.Files
For Each objFile in colFiles
    processFile objFile,objFolder 
Next
 
'process file is all subfolders of the start folder (recursive)
ShowSubfolders objFSO.GetFolder(objStartFolder)
Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
        Set objFolder = objFSO.GetFolder(Subfolder.Path)
        Set colFiles = objFolder.Files
        For Each objFile in colFiles
            processFile objFile,objFolder
        Next
        ShowSubFolders Subfolder
    Next
End Sub
 
'deletes the file if older than hours to keep
sub processFile(objfile,objfolder)
	If DateDiff("h", objFile.DateLastModified, Now) > intHoursToKeep Then
 		WScript.Echo(objfolder.path & "," & objfile.name & "," & objfile.DateLastModified & "," & strNOW & ",Deleted")
		objFSO.DeleteFile objFile
	Else
		WScript.Echo(objfolder.path & "," & objfile.name & "," & objfile.DateLastModified & "," & strNOW& ",Not Deleted")
	End if
End sub

Open in new window

0
 

Author Closing Comment

by:bmlguy
ID: 31583563
Perfect, thanks
0

Featured Post

Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

While rebooting windows server 2003 server , it's showing "active directory rebuilding indices please wait" at startup. It took a little while for this process to complete and once we logged on not all the services were started so another reboot is …
With User Account Control (UAC) enabled in Windows 7, one needs to open an elevated Command Prompt in order to run scripts under administrative privileges. Although the elevated Command Prompt accomplishes the task, the question How to run as script…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

661 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question