Тема: VBS: поиск нескольких фраз в текстовом файле
Добрый день, уважаемые коллеги!
Очень трубуется помощь в написании скрипта.
Путем долгих усилий написала скрипт по отслеживанию логов бэкапов-уведомление по почте если:
1 размер файла лога нулевой
2 отсутствует лог
3 есть ли слово error
Так вот вся проблема в том, что поик организован с помошью регулярных выражений только по слову ERROR, но мне то нужна еще проверка по словам: did not successfully complete/not/Insufficient disk space.
Сильно затрудняюсь с этим, ка кэто сделать - записать в массив слова или можно задавать несколько шаблонов регулярных выражений?
вот такой кусок скрипта:
Option Explicit
Dim oFSO, oFSO_er, oWshNetwork, oCDO, oFolder, oFiles, oFile, oTextFile, objFile, objRegExp
dim strFileName, strComputerName, LogFile, ForReading, strLine
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFSO_er = CreateObject("Scripting.FileSystemObject")
Set oWshNetwork = WScript.CreateObject("WScript.Network")
Const BACKUP_LOG_PATH = "C:\Documents and Settings\user\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data"
Const EMAIL_RECIPIENT = "admin@admin.ru"
strFileName = ""
strComputerName = oWshNetwork.ComputerName
ForReading = 1
Set objRegExp = CreateObject("VBScript.RegExp") 'Создается объект регулярных выражений
objRegExp.Pattern = "error" 'Указывается ключевые слова поиска
objRegExp.IgnoreCase = True 'Указывается независимость от регистра символов
Set oFolder = oFSO.GetFolder(BACKUP_LOG_PATH)
Set oFiles = oFolder.Files
For Each oFile in oFiles
If oFSO.GetExtensionName(oFile.Name) = "log" Then
If DateValue(oFile.DateLastModified) = Date() Then
LogFile = oFile.Name
strFileName = BACKUP_LOG_PATH & "\" & LogFile
' Проверка размера лог-файла
If oFile.Size = "0" Then
EmailLogNullFileSize
End If
' Начало проверки файла на наличие "Error"
Set objFile = oFSO.OpenTextFile(strFileName, ForReading) ' Открываем файл на чтение
Dim ErrText
ErrText=""
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine 'Читаем 1 строку файла
If objRegExp.Test(strLine) Then 'Проверяем наличие слова "Error" в строке
ErrText = ErrText & objFile.ReadLine & VbCrLf
End If
Loop
objFile.Close ' Закрываем файл
' Конец проверки файла на наличие "Error"
If ErrText="" Then
EmailLogNTBackupSuccess ' Если ошибок в лог-файле не обнаружено
Else
EmailLogErorFound(ErrText) ' Если есть ошибки в лог-файле обнаружены
End If
End If ' Если нет файла с текущей датой
End If ' Если нет лог-файлов
Next
If strFileName = "" Then
EmailLogNotFound
End If