Следующая VBScript будет отображать состояние одной ping
команды из списка хостов в таблицу Excel:Непрерывный пинг с обновлениями для Exel из списка имен хостов с помощью VBScript
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
'# Define Labels
objExcel.Cells(1, 1).Value = "Node"
objExcel.Cells(1, 2).Value = "Status"
'# Create file system object for reading the hosts from text file
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
'# Loop thru the text file till the end
Do While Not (InputFile.atEndOfStream)
HostName = InputFile.ReadLine
'# Create shell object for Pinging the host machines
Set WshShell = WScript.CreateObject("WScript.Shell")
Ping = WshShell.Run("ping -n 1 " & HostName, 0, True)
objExcel.Cells(intRow, 1).Value = HostName
'# use switch case for checking the machine updown status
Select Case Ping
Case 0
objExcel.Cells(intRow, 2).Value = "Up"
objExcel.Cells(intRow, 2).Interior.Color = vbGreen
Case 1
objExcel.Cells(intRow, 2).Value = "Down"
objExcel.Cells(intRow, 2).Interior.Color = vbRed
End Select
intRow = intRow + 1
Loop
'# Format the excel
objExcel.Range("A1:B1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
Этот код работает как задумано.
Я хочу постоянно пинговать имена хостов с живыми обновлениями в Excel. Я попытался добавить -t
в команду ping - вместо -n 1
, как и в командной строке, но скрипт зависает, так как он остановится на первом имени хоста в списке и не будет продвигаться дальше.
Мой вопрос: Как добиться непрерывной команды ping или запустить сценарий несколько раз?
После поиска в Интернете решения в течение нескольких дней, я не могу найти его.
Вы можете использовать 'Application.OnTime' в Excel, чтобы запустить макрос в цикле с определенным интервалом времени. EDIT: поскольку вы используете vbscript, вы можете поместить свой код в цикл и добавить задержку с помощью 'WScript.Sleep()' Вам нужно будет изменить способ управления отображением результатов, хотя ... –
@TimWilliams, Можете ли вы расширить концепцию цикла и сколько изменений в отображении результатов мы говорим здесь? Я выбрал идею вывода для HTML-файла позже по этой дороге развития. Я знаю, что это немного не по теме для этого вопроса, но если я должен повернуть, это направление, в которое я хотел бы войти - как записка. – Vandal