Solved

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

Posted on 2008-11-01
4
2,985 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 375 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 125 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: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

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

In this article we want to have a look at the directory attributes which are used by Microsoft to store the so called Security Identifiers (SID). These SIDs plays an important role in delegating and granting permissions and in authentication of trus…
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, viewers will be given step by step instructions on adjusting mouse, pointer and cursor visibility in Microsoft Windows 10. The video seeks to educate those who are struggling with the new Windows 10 Graphical User Interface. Change Cu…
Michael from AdRem Software explains how to view the most utilized and worst performing nodes in your network, by accessing the Top Charts view in NetCrunch network monitor (https://www.adremsoft.com/). Top Charts is a view in which you can set seve…

705 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