连续ping通过VBScript从主机名列表更新到Exel

以下VBScript将显示从主机名列表到Excel电子表格的单个ping命令的状态:

 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 

此代码按预期工作。

我想不断ping主机名与实时更新到Excel。 我已经尝试在ping命令中添加-t ,而不是在命令提示符下使用-n 1 ,但脚本被挂起,因为它将停止在列表中的第一个主机名上,并且不会继续进行。

我的问题:如何实现连续的ping命令或重复运行脚本?

在线search了几天的解决scheme之后,我找不到任何解决scheme。

使用wscript.sleep并将结果写入文本文件

 Dim txt, fso, InputFile, OutputFile, arr, h, Ping, sep Set fso = CreateObject("Scripting.FileSystemObject") Set WshShell = wscript.CreateObject("WScript.Shell") '# load the hosts from a text file into an array Set InputFile = fso.OpenTextFile("MachineList.Txt") arr = Split(InputFile.readall(), vbCrLf) InputFile.Close Do txt = Now & vbcrlf 'add a timestamp sep = "" For Each h In arr Ping = WshShell.Run("ping -n 1 " & h, 0, True) txt = txt & sep & h & "," If Ping = 1 Then txt = txt & "Up" ElseIf Ping = 0 Then txt = txt & "Down" Else txt = txt & "???" End If sep = vbCrLf Next Set OutputFile = fso.createTextFile("Results.Txt") OutputFile.write txt OutputFile.Close wscript.sleep 1000 * 60 '60 sec Loop