asked on
strFileName = Wscript.Arguments.Named("file") 'Get file name from argument
If strFileName = "" Then
Wscript.Echo "Message: You must specify a File Name like this: /file:""blah.txt"""
Wscript.Quit(4)
End If
strSearch = Wscript.Arguments.Named("search") 'Get search string form argument
If strSearch = "" Then
Wscript.Echo "Message: You must specify a string to search for like this: /search:""ERROR"""
Wscript.Quit(4)
End If
If strFailIf="" Then strFailIf="found" End If
If (strFailIf="found") Then
strFound=3
strNotFound=0
ElseIf (strFailIf="notfound" or strFailIf="not found") Then
strFound=0
strNotFound=3
Else
strFound=4
strNotFound=4
Wscript.Echo "Message: ERROR, set strFailIf"
Wscript.Quit(4)
End If
yyyy = Datepart("yyyy",Date())
yy = Right(yyyy, 2)
m = Datepart("m",Date())
mm = Right("0" & m, 2)
d = Datepart("d",Date())
dd = Right("0" & d, 2)
If (InStr(1,strFileName,"${Date}",1) <> 0) Then
If (InStr(1,strFileName,"${Date}",1) <> 0 AND strDateFormat <> "") Then
strDateFormat = replace(strDateFormat, Space(1), " & Space(1) & ")
strDateFormat = replace(strDateFormat, "_", " & ""_"" & ")
strDateFormat = replace(strDateFormat, "/", " & ""/"" & ")
strDateFormat = replace(strDateFormat, "-", " & ""-"" & ")
strDateFormat = replace(strDateFormat, ".", " & ""."" & ")
strFileName = Replace(strFileName,"${Date}",eval(strDateFormat),1,-1,1)
Else
Wscript.Echo "Message: Error with ${Date} and strDateFormat. Please review instructions at top of script."
Wscript.Quit(4)
End If
End If
strPattern = strSearch
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists("temp") Then
objFSO.CreateFolder("temp")
End If
PrevLogFile = "temp\" & strSearch & "-" & mm & "_" & dd-1 & "_" & yyyy & ".txt"
If objFSO.FileExists(PrevLogFile) Then
set objPrevLogFile = objFSO.GetFile(PrevLogFile)
objPrevLogFile.Delete
End If
PreviousFinds = 0
LogFile = "temp\" & strSearch & "-" & mm & "_" & dd & "_" & yyyy & ".txt"
If objFSO.FileExists(LogFile) Then
Set objLog = objFSO.OpenTextFile(LogFile,1, True)
If objFSO.FileExists(LogFile) Then
If objFSO.GetFile(LogFile).Size = 0 Then
Wscript.Echo "Logfile has no content"
PreviousFinds = 0
Else
Set objLog = objFSO.OpenTextFile(LogFile, 1, True)
PreviousFinds = objLog.ReadAll
If Not IsNumeric(PreviousFinds) Then
Wscript.Echo "Contents in logfile not numeric: " & PreviousFinds
PreviousFinds = 0
End If
End if
End If
End If
If objFSO.FileExists( strFileName ) Then
Set objFile = objFSO.GetFile(strFileName)
If( IsEmpty( objFile ) = True ) Then
WScript.Echo "Message: OBJECT NOT INITIALIZED"
WScript.Echo "Statistic: 0"
WScript.Quit(4)
End If
else
WScript.Echo "Message: The file """ & strFileName & """ was not found!<BR>This could indicate that the file does not exist or you do not have the correct credentials for monitoring. <BR>"
WScript.Echo "Statistic: 0"
WScript.Quit(strNotFound)
End If
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = strPattern
objRegEx.IgnoreCase = True
Set objReadFile = objFSO.OpenTextFile(strFileName, ForReading)
x=1
prev_line3= objReadFile.ReadLine
prev_line2= objReadFile.ReadLine
prev_line1= objReadFile.ReadLine
Do Until objReadFile.AtEndOfStream
strSearchString = objReadFile.ReadLine
Set colMatches = objRegEx.Execute(strSearchString)
If colMatches.Count > 0 Then
For Each strMatch in colMatches
If int(x) > int(PreviousFinds) Then
Wscript.Echo "Statistic: " & PreviousFinds+1
Wscript.Echo "Message: New search for """ & strSearch & """ was found: " & prev_line3 & prev_line2 & prev_line1 & strSearchString
Set objLog = objFSO.OpenTextFile(LogFile, 2, True)
objLog.WriteLine(Now & " - " & PreviousFinds+1)
objLog.Close
Wscript.Quit(StrFound)
End If
x=x+1
Next
End If
prev_line3=prev_line2
prev_line2=prev_line1
prev_line1=strSearchString
Loop
If int(x) >1 Then
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: New search for """ & strSearch & """ was found, but previous searches did find """ & strSearchString & """."
Wscript.Quit(StrFound)
End If
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: Search for """ & strSearch & """ was not found."
Wscript.Quit(strNotFound)
objReadFile.Close