Сравнение пингов, vbs
Здравствуйте! Подскажите, пожалуйста. Я с vbs первый день знаком Так вот, сколотил скрипт, который пингует два ип адреса, и вычисляет разницу между временем ответа, а потом эти данные передает в текстовый документ. Но есть одно но...он делает один запрос и два ип, и соответственно получаем один результат. А нужно чтобы он непрерывно пинговал, вычитал, и записывал каждое значение в блокнот. Я так понимаю, надо куда то влепить цыкл, но какой и куда? или вообще не цикл?
Вот скрипт :
Код:
' Создаем объект Shell
' Объявляем константы
Const wbemFlagForwardOnly = 32
Const wbemFlagReturnImmediately = 16
Const ForWriting = 2
' Функция для записи информации в файл
Sub TextOut (Text, File)
' Объявляем переменные
Dim objFSO, FOut
' Создаем объект FileSystemObject
Set objFSO=WScript.CreateObject("Scripting.FileSystemObject")
' Открываем выходной файл для записи
Set FOut = objFSO.OpenTextFile (File,ForWriting,true)
' Записываем текстовую строку в файл
FOut.WriteLine Text
' Закрываем выходной файл
FOut.Close
End Sub
Set Shell = CreateObject("WScript.Shell")
' Методом EXEC запускаем ping c одним запросом.
Set ping = Shell.exec("ping -n 1 www.google.com")
Set ping2 = Shell.exec("ping -n 1 vk.com")
' Создаем две переменные - в первой находится исходящий поток ping
' во второй собсвенно время отклика
Dim answer: answer = ""
Dim ping_time: ping_time = ""
Dim answer2: answer2 = ""
Dim ping_time2: ping_time2 = ""
' Ждем пока завершится ping (пока ping.Status = 0 утилита ping все еще рабоает)
Do While true
If ping.status = 0 Then
WScript.Sleep 1000
Else
' После завершения работы ping считываем все, что она нам выдает
answer = ping.StdOut.ReadAll
answer2 = ping2.StdOut.ReadAll
Exit Do
End if
Loop
' Тут начинается самая гадкая часть - работа со строками
' К тому же виндовая консоль работает в cp866 а скрипты в cp1251,
' с русским все очень плохо, а как менять кодировку в VBScript я не знаю
' В переменной answer содержится одна строка, но на самом деле их там много
' разделенных символом конца строки
' Вот мы и разбиваем большую строку на массив маленьких
answer = Split(answer, vbCrLf)
answer2 = Split(answer2, vbCrLf)
' четвертый элемент массива answer(3) как раз нужная нам строка
' Разбиваем ее по пробелам - из полученного массива выбираем 6 элемент
' это как раз время=XXXмс
' Дальше обрезаем время= и мс и получем нужную нам переменную ping_time
ping_time = Split(answer(3), " ")(5)
ping_time = Mid(ping_time, 7)
ping_time = Mid(ping_time, 1, Len(ping_time)-2)
ping_time2 = Split(answer2(3), " ")(5)
ping_time2 = Mid(ping_time2, 7)
ping_time2 = Mid(ping_time2, 1, Len(ping_time2)-2)
resoult=ping_time2-ping_time
' Выводим результат в текстовый файл
TextOut resoult, "C:\111.txt"
|