оптимизировать vbs скрипт.

mudvaynefan

Я тут на скорую руку слабал скрипт на vbs с тем, чтобы он выводил количество заданных Pattern'ов в файлах в папке. Он должен исполняться агентом программы мониторинга и выводить количество ошибок в логах например.
Но иногда быают такие косяки с ним - я его исполняю программой cscript.exe, так вот - в списке процессов иногда повисают 4, 5 таких процессов, которые загружают процессор на 100 %.
Не из-за того ли это, что скрипт просто долго работает? (В наборе Files - 242 элемента)
Я пробовал его исполнять в момент кризиса - дольше всего тупит на строчке "For Each objFile In Files"
On Error Resume Next
Set arg = WScript.Arguments
StrSearchstring = arg.Item(0)
Period=86400
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDateTime = CreateObject("WbemScripting.SWbemDateTime")
Set objService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\CIMV2")
If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If

sum=0
Set Files = objService.ExecQuery("SELECT * FROM CIM_DataFile WHERE " & _
"Drive='F:'" & _
"AND Path ='\\pie4\\pd\\trc\\'" )

For Each objFile In Files
objDateTime.Value = objFile.CreationDate
If DateDiff("s",objDateTime.GetVarDate,Now) < Period then
Set objTextFile = objFSO.OpenTextFile (objFile.Name, 1)
Do Until objTextFile.AtEndOfStream

strLine = objTextFile.Readline

If InStr(strLine, StrSearchstring) <> 0 Then
sum=sum+1
End If
Loop
ObjTextFile.close
End If

Next


wscript.echo sum

П.С. строго не ругайте - на vbs первый раз писал.

mudvaynefan

Блин, парни, вы чО? =)

evgen5555

А зачем через WMI?

mudvaynefan

Хз. Я нагуглил так. Искал по vbs, файловая система, и все такое =)

mudvaynefan

Вот результаты моих изысканий:
1. НЕ через wmi работает быстрее
2. Проблема была скорее всего в On Error Resume Next
Оставить комментарий
Имя или ник:
Комментарий: