Solved

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

Posted on 2009-05-20
5
899 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 500 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

10 Questions to Ask when Buying Backup Software

Choosing the right backup solution for your organization can be a daunting task. To make the selection process easier, ask solution providers these 10 key questions.

Question has a verified solution.

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

Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
This article provides a convenient collection of links to Microsoft provided Security Patches for operating systems that have reached their End of Life support cycle. Included operating systems covered by this article are Windows XP,  Windows Server…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
Video by: Mark
This lesson goes over how to construct ordered and unordered lists and how to create hyperlinks.

623 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