?
Solved

vbscript to delete ex*.log files older than x days

Posted on 2008-11-01
4
Medium Priority
?
2,987 Views
Last Modified: 2012-06-27
I need a script that recursively deletes IIS log files
The log files are in a log folder within each website
I found this script
http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_23173209.html
but that is only to delete files older than x numver of days

I am a bit in a hurry for this, so 500 points
0
Comment
Question by:Richard Frank
[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
  • 2
4 Comments
 
LVL 3

Accepted Solution

by:
DrunkenELF earned 1500 total points
ID: 22857691
Hi,
I use this script to compress and delete log files for all items in IIS - FTP, SMTP service and all web sites.
 
Cheers!
D-ELf

Const RemoveOlderThan = 30todayDate=cDate(day(now) &" "& MonthName(Month(Now),true) &" "&  Year(Now))Set fso = CreateObject("Scripting.FileSystemObject")set WshShell = WScript.CreateObject("WScript.Shell")Set objIIS = GetObject("IIS://LOCALHOST/W3SVC")For Each objWeb in objIIS   If LCase(objWeb.Class) = "iiswebserver" Then        if fso.FolderExists(objWeb.LogFileDirectory) Then	For Each fLogDir in fso.GetFolder(objWeb.LogFileDirectory).SubFolders            WScript.Echo objWeb.LogFileDirectory & "\" & fLogDir.Name            For Each fLog in fLogDir.Files	        If UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".CAB" Then		   fileDate=cDate(Mid(fLog.name,7,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,3,2))		   If fileDate< DateAdd("d", toDayDate, -RemoveOlderThan) Then		      'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" & flog.name)		      fLog.Delete		   End If		ElseIf UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".LOG" Then		   fileDate=cDate(Mid(fLog.name,7,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,3,2))		   If fileDate< DateAdd("d", toDayDate, -RemoveOlderThan) Then		      'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)                      fLog.Delete		   Else		       if fileDate < todayDate Then       		          'WScript.Echo("Compressing "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)		          CABCommand = "MAKECAB /V1 "& fLog.Path &" "& Left(fLog.Path,Len(fLog.Path)-3) &"cab"			  CABReturnCode = WshShell.Run(CABCommand, 7, True)			  If (Err.Number <> 0) Then			     RaiseError Err.Description & " (" & Err.Number & ")"                          ElseIf (CABReturnCode <> 0) Then                             RaiseError "Return code from MAKECAB.EXE was " & CABReturnCode			  Else          		    'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)			    fLog.Delete			  End If		    End If		End If           End if	Next    Next    End If   End IfNextSet objIIS = nothingSet wshShell = nothingSet fso = nothing

Open in new window

0
 
LVL 19

Assisted Solution

by:weellio
weellio earned 500 total points
ID: 22859153
this is merely D-elfs script in a usable format,.. give him the points if it works, if not, then i'll write something up for you.
Const RemoveOlderThan = 30
todayDate=cDate(day(now) &" "& MonthName(Month(Now),true) &" "&  Year(Now))
Set fso = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject("WScript.Shell")
Set objIIS = GetObject("IIS://LOCALHOST/W3SVC")
For Each objWeb in objIIS
	If LCase(objWeb.Class) = "iiswebserver" Then
		if fso.FolderExists(objWeb.LogFileDirectory) Then
			For Each fLogDir in fso.GetFolder(objWeb.LogFileDirectory).SubFolders
				WScript.Echo objWeb.LogFileDirectory & "\" & fLogDir.Name
				For Each fLog in fLogDir.Files
					If UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".CAB" Then
						fileDate=cDate(Mid(fLog.name,7,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,3,2))
						If fileDate< DateAdd("d", toDayDate, -RemoveOlderThan) Then
							'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" & flog.name)
							fLog.Delete
						End If
					ElseIf UCase(Left(fLog.Name,2))="EX" And UCase(Right(fLog.Name,4))=".LOG" Then
						fileDate=cDate(Mid(fLog.name,7,2) &" "& monthname(cint(Mid(fLog.name,5,2)),true) &" "& Mid(fLog.name,3,2))
						If fileDate < DateAdd("d", toDayDate, -RemoveOlderThan) Then
							'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)
							fLog.Delete
						Else
							if fileDate < todayDate Then
								'WScript.Echo("Compressing "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)
								CABCommand = "MAKECAB /V1 "& fLog.Path &" "& Left(fLog.Path,Len(fLog.Path)-3) &"cab"
								CABReturnCode = WshShell.Run(CABCommand, 7, True)
								If (Err.Number <> 0) Then
									RaiseError Err.Description & " (" & Err.Number & ")"
								ElseIf (CABReturnCode <> 0) Then
									RaiseError "Return code from MAKECAB.EXE was " & CABReturnCode
								Else
									'WScript.Echo("Deleting "& objWeb.LogFileDirectory & "\" & fLogDir.Name & "\" &  flog.name)
									fLog.Delete
								End If
							End If
						End If
					End if
				Next
			Next
		End If
	End If
Next
   Set objIIS = nothing
   Set wshShell = nothing
   Set fso = nothing

Open in new window

script.vbs.txt
0
 
LVL 1

Author Comment

by:Richard Frank
ID: 22861231
thnx you both.. that is wat I needed. top notch
0
 
LVL 1

Author Closing Comment

by:Richard Frank
ID: 31512334
simple and all what is necessary.
though d-elf.. you had to much beers ;) to omit the enters
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

Question has a verified solution.

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

Hello again, all.  For those of you that have been following along, you'll know that this is my third article on this topic (though it is not Part III).  This article is sort of remedial, and probably the topic with which I should have started the s…
Deploying a Microsoft Access application in a Citrix environment is not difficult but takes a few steps. However, Citrix system people are often of little help, as they typically know next to nothing about Access. The script provided here will take …
In this video we outline the Physical Segments view of NetCrunch network monitor. By following this brief how-to video, you will be able to learn how NetCrunch visualizes your network, how granular is the information collected, as well as where to f…
This is my first video review of Microsoft Bookings, I will be doing a part two with a bit more information, but wanted to get this out to you folks.
Suggested Courses

762 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