Как показать вывод DOS при использовании vbscript Exec - PullRequest
5 голосов
/ 03 февраля 2011

У меня есть следующий 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 ]

3 голосов
/ 03 февраля 2011

В хосте сценариев Windows отсутствует команда system (), поэтому вы должны реализовать свою собственную, IMHO, моя вспомогательная функция превосходит версию stealthyninja, поскольку она ожидает выхода из процесса, а не просто пустой стандартный вывод, а также обрабатывает 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%\*")
3 голосов
/ 03 февраля 2011

Попробуйте -

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
0 голосов
/ 11 сентября 2018

Правильный путь:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...