如何在使用vbscript Exec时显示DOS输出

时间:2011-02-03 15:40:24

标签: command-line vbscript

我有以下VBScript:

Set Shell = WScript.CreateObject("WScript.Shell")
commandLine = puttyPath & "\plink.exe -v" & " -ssh" [plus additional commands here]    
Set oExec = Shell.Exec(commandLine)

这会导致出现DOS窗口但不显示plink.exe的输出。有没有办法让DOS窗口显示这个输出?

3 个答案:

答案 0 :(得分:3)

尝试 -

Set Shell = WScript.CreateObject("WScript.Shell")
commandLine = puttyPath & "\plink.exe -v" & " -ssh" [plus additional commands here]    
Set oExec = Shell.Exec(commandLine)

Set oStdOut = oExec.StdOut

While Not oStdOut.AtEndOfStream
    sLine = oStdOut.ReadLine
    WScript.Echo sLine
Wend

答案 1 :(得分:3)

Windows脚本主机缺少system()命令,所以你必须实现自己的,恕我直言我的助手功能优于stealthyninja的版本,因为它等待进程退出而不只是空stdout,它还处理stderr:

Function ExecuteWithTerminalOutput(cmd)
Set sh = WScript.CreateObject("WScript.Shell")
Set exec =  sh.Exec(cmd)
Do While exec.Status = 0
    WScript.Sleep 100
    WScript.StdOut.Write(exec.StdOut.ReadAll())
    WScript.StdErr.Write(exec.StdErr.ReadAll())
Loop
ExecuteWithTerminalOutput = exec.Status
End Function


call ExecuteWithTerminalOutput("cmd.exe /c dir %windir%\*")

答案 2 :(得分:0)

正确的方法是:

Set Shell = WScript.CreateObject("WScript.Shell")
commandLine = puttyPath & "\plink.exe -v" & " -ssh" [plus additional commands here]    
Set oExec = Shell.Exec(commandLine)

Set oStdOut = oExec.StdOut

While Not oStdOut.AtEndOfStream
    sLine = oStdOut.ReadLine
    WScript.Echo sLine
Wend

或者:

Set Shell = WScript.CreateObject("WScript.Shell")
commandLine = puttyPath & "\plink.exe -v" & " -ssh" [plus additional commands here]    
Set oExec = Shell.Exec(commandLine)
WScript.Echo   oExec.StdOut.ReadAll