循环功能?

时间:2015-03-04 21:09:56

标签: function loops vbscript call

是否可以循环一个函数,直到item = TRUE?

我正在尝试ping服务器... 建立连接后,或Ping = TRUE,然后执行程序。 如果未建立连接,则ping将重复,直到它为TRUE。

到目前为止,我的代码如下。 如果为TRUE,MyProgram将打开。 如果为False,则再次调用该函数。但这不会发生......实际上没有任何事情发生,它只是退出。

任何帮助都很高兴。 如果有人知道更有效的方法来完成这项任务,那么请告诉我。 谢谢!

     Function Ping
        Dim oPing, oRetStatus, bReturn
        Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address='" & "strHost" & "'")

        For Each oRetStatus In oPing
            If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
                bReturn = False
            Else
                bReturn = True
            End If
            Set oRetStatus = Nothing
        Next
        Set oPing = Nothing

    Ping = bReturn
    End Function

If Ping Then
    Call MyProgram
Else
    Call PingSub
End If

Sub MyProgram
    Dim objShell
        Set objShell = WScript.CreateObject( "WScript.Shell" )
        objShell.Run("\\Path\To\My\Program.exe")
        Set objShell = Nothing
End Sub

Sub PingSub
    Call Ping
End Sub

2 个答案:

答案 0 :(得分:5)

试试这样:

Option Explicit
Dim MyLoop,strComputer,objPing,objStatus
MyLoop = True
While MyLoop = True
    strComputer = "smtp.gmail.com"
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}!\\").ExecQuery _
    ("select * from Win32_PingStatus where address = '" & strComputer & "'")
    For Each objStatus in objPing
        If objStatus.Statuscode = 0 Then
            MyLoop = False
            Call MyProgram()
            wscript.quit
        End If
    Next
    Pause(10) 'To sleep for 10 secondes
Wend
'**********************************************************************************************
 Sub Pause(NSeconds)
    Wscript.Sleep(NSeconds*1000)
 End Sub
'**********************************************************************************************
Sub MyProgram()
Dim objShell
Set objShell = CreateObject( "WScript.Shell" )
objShell.Run("calc.exe")
Set objShell = Nothing
End Sub
'**********************************************************************************************

答案 1 :(得分:0)

这将是一个递归函数。

https://msdn.microsoft.com/en-us/library/81tad23s.aspx我假设你正在使用VBA

这是MS的一个例子