VBScript getting results from Shell

后端 未结 4 1342
囚心锁ツ
囚心锁ツ 2020-12-01 21:26
Set wshShell = WScript.CreateObject (\"WSCript.shell\")
wshshell.run \"runas ...\"

How do I get the results and display in a MsgBox

4条回答
  •  [愿得一人]
    2020-12-01 22:10

    This is a modified version of Nilpo's answer that fixes the issue with WshShell.Exec being asynchronous. We do a busy-loop waiting until the shell's status is no longer running, and then we check the output. Change the command-line argument -n 1 to a higher value to make ping take longer, and see that the script will wait longer until completion.

    (If anyone has a true asynchronous, event-based solution to the problem, then please let me know!)

    Option Explicit
    
    Const WshRunning = 0
    Const WshFinished = 1
    Const WshFailed = 2
    
    Dim shell : Set shell = CreateObject("WScript.Shell")
    Dim exec : Set exec = shell.Exec("ping.exe 127.0.0.1 -n 1 -w 500")
    
    While exec.Status = WshRunning
        WScript.Sleep 50
    Wend
    
    Dim output
    
    If exec.Status = WshFailed Then
        output = exec.StdErr.ReadAll
    Else
        output = exec.StdOut.ReadAll
    End If
    
    WScript.Echo output
    

提交回复
热议问题