¿Cuál es el comando o la forma más rápida de enviar resultados a la consola usando vbscript?
165
Quiere decir:
Wscript.Echo "Like this?"
Si ejecuta eso en wscript.exe
(el controlador predeterminado para la extensión .vbs, lo que obtendrá si hace doble clic en el script) obtendrá un cuadro de diálogo "MessageBox" con su texto. Si ejecuta eso debajo cscript.exe
obtendrá salida en la ventana de su consola.
MsgBox("text")
oMsgBox(object.property)
, peroWscript.Echo
es más fácil escribir. Gracias.WScript.Echo
debe usar para saber si está ejecutando a través deWScript
oCScript
. Es decir, no hay unCScript.Echo
, en caso de que los futuros googlers se pregunten. ( Muy contento de que los msgboxes hayan desaparecido [cuando se ejecutan concscript
], sin embargo; gracias.)WScript.Echo
. Supongo que si quisieras permanecer totalmente dentro de WScript, podrías hacer algo horriblemente dudoso como Ejecutar otro proceso para hacer un "SendKeys" al proceso padre para cerrar el MessageBox.popup
método. Muy similar,echo
pero le permite especificar un tiempo de espera después del cual se cerrará automáticamente el cuadro emergente. Muy conveniente y fácil de usar: technet.microsoft.com/en-us/library/ee156593.aspxEsto se encontró en Dragon-IT Scripts y Code Repository .
Puede hacer esto con lo siguiente y mantenerse alejado de las diferencias cscript / wscript y le permite obtener la misma salida de consola que tendría un archivo por lotes. Esto puede ayudar si llama a VBS desde un archivo por lotes y necesita hacer que se vea perfecto.
fuente
WScript.Echo
. De hecho, la diferencia se amplía porque el script ya no se ejecutará en absoluto con WScript. Es una técnica válida que tiene sus usos, por ejemplo, si uno necesita escribir en StdErr, pero en el contexto de esta respuesta, es engañoso.WScript.Echo
: secscript //b foobar.vbs
ejecutafoobar.vbs
sin ninguna salida de consola, pero por el método de Rob puede tener salida incluso cuando se pasa\\b
acscript.exe
Solo necesita forzar cscript en lugar de wscript. Siempre uso esta plantilla. La función ForceConsole () ejecutará sus vbs en cscript, también tiene un buen alias para imprimir y escanear texto.
fuente
Encontré esta publicación y volví a un enfoque que usé hace algún tiempo, que es similar al de @ MadAntrax.
La principal diferencia es que utiliza una clase VBScript definida por el usuario para envolver toda la lógica para cambiar a CScript y enviar texto a la consola, por lo que hace que el script principal sea un poco más limpio.
Esto supone que su objetivo es transmitir la salida a la consola, en lugar de que la salida vaya a los cuadros de mensajes.
La clase cCONSOLE está abajo. Para usarlo, incluya la clase completa al final de su secuencia de comandos y luego ejemplifíquela justo al comienzo de la secuencia de comandos. Aquí hay un ejemplo:
Aquí está el código para la clase cCONSOLE
fuente
Hay cinco formas de enviar texto a la consola:
WScript.Echo saldrá a la consola, pero solo si el script se inicia usando cscript.exe. Saldrá a los cuadros de mensaje si comenzó a usar wscript.exe.
WScript.StdOut.Write y WScript.StdOut.WriteLine siempre saldrán a la consola.
StdOut.Write y StdOut.WriteLine también siempre saldrán a la consola. Requiere la creación de objetos adicionales, pero es aproximadamente un 10% más rápido que WScript.Echo.
fuente