Este es un ejemplo de código de VBScript que muestra cómo atrapar lo que un programa de línea de comando envíe a la salida estándar. Ejecuta el comando xcopy /?
y muestra el resultado en un cuadro de mensaje. Antes de que aparezca el cuadro de mensaje, por una fracción de segundo verá que aparece la ventana de la consola.Código de VBscript para capturar stdout, sin mostrar la ventana de la consola
Set objShell = WScript.CreateObject("WScript.Shell")
Set objExec = objShell.Exec("xcopy /?")
Do
line = objExec.StdOut.ReadLine()
s = s & line & vbcrlf
Loop While Not objExec.Stdout.atEndOfStream
WScript.Echo s
Aquí hay otro ejemplo de código de VBScript que muestra cómo ejecutar una secuencia de comandos sin mostrar la ventana de la consola.
objShell.Run "c:\temp\mybatch.bat C:\WINDOWS\system32\cmd.exe", 0
o
objShell.Run "c:\temp\myscript.vbs C:\WINDOWS\system32\cscript.exe", 0
Como se puede ver que tiene la forma <script><space><executor>
. El último ejemplo se utiliza en lugar de objShell.Run
objShell.Exec
Lo que no sé es cómo ejecutar un programa de línea de comandos (si es necesario desde un archivo por lotes), coger la salida estándar, sin mostrar la ventana de la consola. ¿Algunas ideas?
Una ingeniosa solución. Lástima de los archivos temporales. Pero cumple con los requisitos, por lo que los puntos son tuyos. Gracias, Marcel. – mgr326639