Tengo el siguiente VBScript:

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

Esto provoca una ventana de DOS a aparecer, pero la salida de plink.exe no se muestra. Hay alguna forma de obtener la ventana de DOS para mostrar esta salida?

InformationsquelleAutor JC. | 2011-02-03

3 Comentarios

  1. 3

    Windows scripting host carece de un sistema() orden, de modo que usted tiene que implementar su propio, en mi humilde opinión, mi función auxiliar es superior a stealthyninja de la versión, ya que se espera la salida del proceso y no sólo vacía stdout y también se ocupa de la 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%\*")
    • Se ve bien, excepto ReadAll es el bloqueo, debe ser ReadLine creo
    • sí, sí que lo está bloqueando y que probablemente podría cambiar a WriteLine+ReadLine tan largo como el de salida se basa en el texto y que no forman parte de algún tipo de binario tubo de operación.
    • Este código no funciona. Me pregunto por qué es aceptado la respuesta.
    • Pegar en un archivo llamado prueba.vbs y ejecutar cscript.exe prueba.vbs Funcionaba correctamente en XP cuando escribí esta respuesta y acabo de probar en Windows 8 máquina y allí funcionó tan bien…
    • Pegar en un archivo llamado prueba.vbs y haga doble clic para ejecutar con wscript.exe (controlador predeterminado para archivos vbs) y se obtiene un identificador no válido mensaje en la línea 6 char 5. He hecho mi versión y comprobar Do While Not objExecObject.StdOut.AtEndOfStream en lugar de exec.Status=0 para determinar niño de fin del proceso.
  2. 3

    Intento –

    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
  3. 0

    La forma correcta es :

    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

    O:

    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

Dejar respuesta

Please enter your comment!
Please enter your name here