<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: Сравнение пингов]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7189</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7189&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: Сравнение пингов».]]></description>
		<lastBuildDate>Tue, 08 May 2012 13:15:33 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60077#p60077</link>
			<description><![CDATA[<p>Спасибо огромное,&nbsp; все работает как надо <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 13:15:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60077#p60077</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60076#p60076</link>
			<description><![CDATA[<p>Ещё один код для новых условий:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strAddress

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObject

Dim objDictionary

Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(&quot;.&quot;, &quot;root\cimv2&quot;)

Set objDictionary      = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)

objDictionary.Add &quot;www.google.com&quot;, Null
objDictionary.Add &quot;www.vk.com&quot;, Null

Do
    For Each strAddress In objDictionary.Keys
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress &amp; &quot;&#039;&quot;)
            With objSWbemObject
                If Not IsNull(.StatusCode) Then
                    If .StatusCode = 0 Then
                        objDictionary.Item(strAddress) = .ResponseTime
                    Else
                        objDictionary.Item(strAddress) = Null
                    End If
                Else
                    objDictionary.Item(strAddress) = Null
                End If
            End With
        Next
    Next
    
    If Not IsNull(objDictionary.Item(&quot;www.google.com&quot;)) And Not IsNull(objDictionary.Item(&quot;www.vk.com&quot;)) Then
        If objDictionary.Item(&quot;www.google.com&quot;) - objDictionary.Item(&quot;www.vk.com&quot;) &gt; 32 Then
            WScript.Echo objDictionary.Item(&quot;www.google.com&quot;) - objDictionary.Item(&quot;www.vk.com&quot;)
        End If
    End If
    
    WScript.Sleep 1000
Loop

objDictionary.RemoveAll

Set objDictionary      = Nothing

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 May 2012 12:53:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60076#p60076</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60075#p60075</link>
			<description><![CDATA[<p>ооо, Спасибо!:)</p><p>а я вот так сделал </p><div class="codebox"><pre><code>Option Explicit

Dim strAddress
Dim strAddress2
Dim resp1
Dim resp2
Dim rez

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObject


Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(&quot;.&quot;, &quot;root\cimv2&quot;)

Do
    For Each strAddress In Array(&quot;www.google.com&quot;)  
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress &amp; &quot;&#039;&quot;)
            With objSWbemObject
            resp2=.ResponseTime
            End With
        Next
    Next
    
    For Each strAddress2 In Array(&quot;www.vk.com&quot;)
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress2 &amp; &quot;&#039;&quot;)
            With objSWbemObject
            resp1=.ResponseTime 
            End With
        Next
    Next
    
    rez=resp1-resp2
    If rez&gt;32 Then
    WScript.Echo rez 
    End If
    
    
    WScript.Echo
    
    WScript.Sleep 1000
Loop

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div><p>Получается, что если разница больше 32 то выводит результат. А при запуске cscript &quot;...&quot; &gt;&gt; c:\111.txt и этот <br />вывод пишется в блокнот. Правда, если пинг меньше 32, то оставляет пустую строку, и того 10 пустых и одно&nbsp; <br />значение <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> так то не хорошо</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 12:38:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60075#p60075</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60074#p60074</link>
			<description><![CDATA[<div class="codebox"><pre><code>Option Explicit

Dim strAddress

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObject

Dim objDictionary

Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(&quot;.&quot;, &quot;root\cimv2&quot;)

Set objDictionary      = WScript.CreateObject(&quot;Scripting.Dictionary&quot;)

objDictionary.Add &quot;www.google.com&quot;, Null
objDictionary.Add &quot;www.vk.com&quot;, Null

Do
    For Each strAddress In objDictionary.Keys
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress &amp; &quot;&#039;&quot;)
            With objSWbemObject
                If Not IsNull(.StatusCode) Then
                    If .StatusCode = 0 Then
                        WScript.Echo .Address &amp; vbTab &amp; &quot;On&quot;  &amp; vbTab &amp; &quot;Response time: &quot; &amp; .ResponseTime &amp; &quot; ms&quot;
                        objDictionary.Item(strAddress) = .ResponseTime
                    Else
                        WScript.Echo .Address &amp; vbTab &amp; &quot;Off&quot; &amp; vbTab &amp; &quot;Status code: &quot; &amp; .StatusCode
                    End If
                Else
                    WScript.Echo strComputer &amp; vbTab &amp; &quot;Not found&quot;
                End If
            End With
        Next
    Next
    
    If Not IsNull(objDictionary.Item(&quot;www.google.com&quot;)) And Not IsNull(objDictionary.Item(&quot;www.vk.com&quot;)) Then
        WScript.Echo &quot;--------------------------------------------------&quot;
        WScript.Echo &quot;Difference: &quot; &amp; CStr(objDictionary.Item(&quot;www.google.com&quot;) - objDictionary.Item(&quot;www.vk.com&quot;))
    End If
    
    WScript.Echo
    
    WScript.Sleep 1000
Loop

objDictionary.RemoveAll

Set objDictionary      = Nothing

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 May 2012 12:23:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60074#p60074</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60073#p60073</link>
			<description><![CDATA[<p>как то сложно мне дается...Разделил на два цикла </p><div class="codebox"><pre><code>Option Explicit

Dim strAddress
Dim strAddress2
Dim res

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObject


Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(&quot;.&quot;, &quot;root\cimv2&quot;)

Do
    For Each strAddress In Array(&quot;www.google.com&quot;)
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress &amp; &quot;&#039;&quot;)
            With objSWbemObject
                If Not IsNull(.StatusCode) Then
                    If .StatusCode = 0 Then
                        WScript.Echo .Address &amp; vbTab &amp; &quot;On&quot; &amp; vbTab &amp; &quot;Response time: &quot; &amp; .ResponseTime &amp; &quot; ms&quot;
                    Else
                        WScript.Echo .Address &amp; vbTab &amp; &quot;Off&quot; &amp; vbTab &amp; &quot;Status code: &quot; &amp; .StatusCode
                    End If
                Else
                    WScript.Echo strComputer &amp; vbTab &amp; &quot;Not found&quot;
                End If
            End With
        Next
    Next
    
    For Each strAddress2 In Array(&quot;www.vk.com&quot;)
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress2 &amp; &quot;&#039;&quot;)
            With objSWbemObject
                If Not IsNull(.StatusCode) Then
                    If .StatusCode = 0 Then
                        WScript.Echo .Address &amp; vbTab &amp; &quot;On&quot; &amp; vbTab &amp; &quot;Response time: &quot; &amp; .ResponseTime &amp; &quot; ms&quot;
                    Else
                        WScript.Echo .Address &amp; vbTab &amp; &quot;Off&quot; &amp; vbTab &amp; &quot;Status code: &quot; &amp; .StatusCode
                    End If
                Else
                    WScript.Echo strComputer &amp; vbTab &amp; &quot;Not found&quot;
                End If
            End With
        Next
    Next
    
    
    
    WScript.Echo
    
    WScript.Sleep 1000
Loop

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div><p>Как теперь вычислить их разницу?</p><p>То что ниже конечно чушь полная, потому что вычитает непонятно что, а не время, и дает 0 ) <br />res=strAddress2-strAddress<br />WScript.Echo res</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 11:35:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60073#p60073</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60072#p60072</link>
			<description><![CDATA[<p>та да, так даже лучше, еще в идеале конечно если, например, разница между пингами 100мс, то записать это значение в блокнот. Если не сложно то помогите, а если я вам сильно морочу голову, то сам буду разбираться)</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 10:38:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60072#p60072</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60071#p60071</link>
			<description><![CDATA[<p><strong>НеОчень</strong>, как есть, без Блокнота, устраивает? Прерывать исполнение скрипта как обычно — «Ctrl-C»/«Ctrl-Break».</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 May 2012 10:29:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60071#p60071</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60070#p60070</link>
			<description><![CDATA[<p>Хм, да, ваш намного приятнее выглядит и работает) Спасибо!</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 10:20:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60070#p60070</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60069#p60069</link>
			<description><![CDATA[<p>Как насчёт такого:<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strAddress

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemObject


Set objSWbemLocator    = WScript.CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(&quot;.&quot;, &quot;root\cimv2&quot;)

Do
    For Each strAddress In Array(&quot;www.google.com&quot;, &quot;www.vk.com&quot;)
        For Each objSWbemObject In objSWbemServicesEx.ExecQuery(&quot;SELECT * FROM Win32_PingStatus WHERE Address = &#039;&quot; &amp; strAddress &amp; &quot;&#039;&quot;)
            With objSWbemObject
                If Not IsNull(.StatusCode) Then
                    If .StatusCode = 0 Then
                        WScript.Echo .Address &amp; vbTab &amp; &quot;On&quot; &amp; vbTab &amp; &quot;Response time: &quot; &amp; .ResponseTime &amp; &quot; ms&quot;
                    Else
                        WScript.Echo .Address &amp; vbTab &amp; &quot;Off&quot; &amp; vbTab &amp; &quot;Status code: &quot; &amp; .StatusCode
                    End If
                Else
                    WScript.Echo strComputer &amp; vbTab &amp; &quot;Not found&quot;
                End If
            End With
        Next
    Next
    
    WScript.Echo
    
    WScript.Sleep 1000
Loop

Set objSWbemServicesEx = Nothing
Set objSWbemLocator    = Nothing

WScript.Quit 0</code></pre></div><p>Запускать в командной строке:<br /></p><div class="codebox"><pre><code>cscript.exe //nologo &quot;&lt;Путь к скрипту.vbs&gt;&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 08 May 2012 10:06:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60069#p60069</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60068#p60068</link>
			<description><![CDATA[<p>вот что я слепил на данный момент :</p><div class="codebox"><pre><code>&#039; Создаем объект Shell 
&#039; Объявляем константы

Const wbemFlagForwardOnly = 32
Const wbemFlagReturnImmediately = 16
Const ForWriting = 2

&#039; Функция для записи информации в файл 
Sub TextOut (Text, File)
  &#039; Объявляем переменные
  Dim  objFSO, FOut 
  &#039; Создаем объект FileSystemObject
  Set  objFSO=WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
  &#039; Открываем выходной файл для записи
  Set  FOut = objFSO.OpenTextFile (File,ForWriting,true)
  &#039; Записываем текстовую строку в файл
  FOut.WriteLine Text
  &#039; Закрываем выходной файл
  FOut.Close
End Sub

Set Shell = CreateObject(&quot;WScript.Shell&quot;) 

&#039; Методом EXEC запускаем ping c одним запросом. 
Set ping = Shell.exec(&quot;ping -n 1 www.google.com&quot;) 
Set ping2 = Shell.exec(&quot;ping -n 1 vk.com&quot;) 
&#039; Создаем две переменные - в первой находится исходящий поток ping 
&#039; во второй собсвенно время отклика 
Dim answer: answer = &quot;&quot; 
Dim ping_time: ping_time = &quot;&quot; 

Dim answer2: answer2 = &quot;&quot; 
Dim ping_time2: ping_time2 = &quot;&quot;
&#039; Ждем пока завершится ping (пока ping.Status = 0 утилита ping все еще рабоает) 
Do While true 
If ping.status = 0 Then 
WScript.Sleep 1000 
Else 
&#039; После завершения работы ping считываем все, что она нам выдает 
answer = ping.StdOut.ReadAll 
answer2 = ping2.StdOut.ReadAll 
Exit Do 
End if 
Loop 

&#039; Тут начинается самая гадкая часть - работа со строками 
&#039; К тому же виндовая консоль работает в cp866 а скрипты в cp1251, 
&#039; с русским все очень плохо, а как менять кодировку в VBScript я не знаю 

&#039; В переменной answer содержится одна строка, но на самом деле их там много 
&#039; разделенных символом конца строки 
&#039; Вот мы и разбиваем большую строку на массив маленьких 
answer = Split(answer, vbCrLf) 
answer2 = Split(answer2, vbCrLf) 

&#039; четвертый элемент массива answer(3) как раз нужная нам строка 
&#039; Разбиваем ее по пробелам - из полученного массива выбираем 6 элемент 
&#039; это как раз время=XXXмс 
&#039; Дальше обрезаем время= и мс и получем нужную нам переменную ping_time 

ping_time = Split(answer(3), &quot; &quot;)(5) 
ping_time = Mid(ping_time, 7) 
ping_time = Mid(ping_time, 1, Len(ping_time)-2) 

ping_time2 = Split(answer2(3), &quot; &quot;)(5) 
ping_time2 = Mid(ping_time2, 7) 
ping_time2 = Mid(ping_time2, 1, Len(ping_time2)-2) 
resoult=ping_time2-ping_time



&#039; Выводим результат в текстовый файл
TextOut  resoult, &quot;C:\111.txt&quot;</code></pre></div><p>Но этот скрипт проверяет пингует и вычитает разницу только один раз...Как сделать, чтобы он беспрерывно пинговал, и записывал все результаты в блокнот? Я так понимаю надо цикл, но как это сделать, не могу разобраться ( я вообще только вчера с vbs познакомился)</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Tue, 08 May 2012 09:41:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60068#p60068</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60018#p60018</link>
			<description><![CDATA[<div class="quotebox"><cite>НеОчень пишет:</cite><blockquote><p>Может кто поможет чем сможет</p></blockquote></div><p>Без проблем. С чем у Вас затруднения в реализации?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 07 May 2012 16:02:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60018#p60018</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: Сравнение пингов]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60013#p60013</link>
			<description><![CDATA[<p>Ребят, очень нужна ваша помощь...нужен скрипт, который пингует два ip,&nbsp; вычисляет между ними разницу&nbsp; во времени ответа, и записывает эту разницу в какой то текстовый документ. Может кто поможет чем сможет</p>]]></description>
			<author><![CDATA[null@example.com (НеОчень)]]></author>
			<pubDate>Mon, 07 May 2012 14:31:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60013#p60013</guid>
		</item>
	</channel>
</rss>
