Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ejecutar un script vbs desde código C#

633 views
Skip to first unread message

Miguel Gómez

unread,
Dec 2, 2009, 11:39:07 AM12/2/09
to
Hola a todos:

Pregunta de novato:

�C�mo puedo ejecutar un script .vbs desde c�digo c#.? El script devuelve
valores que escribo en la consola usando "echo". La idea es recuperar esos
"echo's" y guardarlos en una string. Ser�a algo as�:

string[ ] resultado = "Ejecutar .vbs"

El script se ejecutar�a, y los echo's que devuelve, los guardar�a en una
matriz de string.

�Alguna sugerencia?

Desde ya muchas gracias y un saludo.

Miguel

Pedro Maicas

unread,
Dec 2, 2009, 3:02:16 PM12/2/09
to

Suponiendo que estamos hablando de windows, se puede hacer, pero
el esfuerzo no vale la pena. Necesitar�as revisar la ayuda
del windows (la que viene con visual c) en todo lo relativo
a aplicaciones de consola, y redirigir la salida estandard.

Tambien podr�as escribir un bat, dentro del cual
lanzas el .vbs con la salida redirigida (esto no lo he
probado pero supongo que funciona)

Sin embargo, como te digo, no vale la pena. Mejor
modifica el vbs para que escriba en un fichero,
y se acab� el problema.

Saludos :-) - Pedro -

http://www.maicas.net/

Harvey Triana

unread,
Dec 2, 2009, 10:13:26 PM12/2/09
to
(*) En C# siempre hay una manera mejor de hacer las cosas ...

Se me ocurre un proceso, p.e....
using System.Diagnostics;
...
string app = "C:\\works\\test.vbs";
Process p = Process.Start(app);
p.WaitForExit();
p.Close();
GetResult();
...
test.vbs escribir�a los datos en alg�n medio (una fuente de texto por
ejemplo), y en GetResult() se leen. (*)
--
<Harvey Triana />


"Miguel G�mez" <m_go...@hotmail.com> escribi� en el mensaje de
noticias:OvkA532c...@TK2MSFTNGP04.phx.gbl...

Alberto Poblacion

unread,
Dec 3, 2009, 2:55:27 AM12/3/09
to
"Miguel G�mez" <m_go...@hotmail.com> wrote in message
news:OvkA532c...@TK2MSFTNGP04.phx.gbl...

> �C�mo puedo ejecutar un script .vbs desde c�digo c#.? El script devuelve
> valores que escribo en la consola usando "echo". La idea es recuperar esos
> "echo's" y guardarlos en una string. Ser�a algo as�:
>
> string[ ] resultado = "Ejecutar .vbs"
>
> El script se ejecutar�a, y los echo's que devuelve, los guardar�a en una
> matriz de string.
>
> �Alguna sugerencia?

Puedes usar la clase Process (en System.Diagnostics) para lanzar el
script, y capturar su salida standard mediante la propiedad StandardOutput
del Process. Algo parecido a lo siguiente (no lo he probado):

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "CMD.exe";
p.StartInfo.Arguments = "/C Ejecutar.vbs";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
string salida = p.StandardOutput.ReadToEnd();
p.WaitForExit();

En el string "salida" tienes todo lo que ha escrito el script. Si lo quieres
trocear para pasarlo a una matriz de strings, puedes hacerlo f�cilmente
mediante un StringReader, o el m�todo Split().

Miguel Gómez

unread,
Dec 3, 2009, 4:08:40 AM12/3/09
to
Pedro, gracias por tu sugerencia.
Un saludo

"Pedro Maicas" <w...@direccion.es> escribi� en el mensaje de
noticias:5nhdh59nvi3f2dm9a...@4ax.com...

Miguel Gómez

unread,
Dec 3, 2009, 4:11:50 AM12/3/09
to
Harvey, gracias por tus sugerencias. Coincido contigo en que "En C# siempre
hay una manera mejor de hacer las cosas ..."

Un saludo.

"Harvey Triana" <harvey...@hotmail.com> escribi� en el mensaje de
noticias:#vDf1a8c...@TK2MSFTNGP06.phx.gbl...

Miguel Gómez

unread,
Dec 3, 2009, 4:14:57 AM12/3/09
to
Hola Alberto

Gracias por tus sugerencias. Creo que es justamente lo que estaba buscando.
Lo probar� y postear� los resultados.

Nuevamente gracias a ti y al grupo.

Un saludo.

"Alberto Poblacion" <earthling-quitae...@poblacion.org>
escribi� en el mensaje de noticias:uMeTD4#cKHA...@TK2MSFTNGP05.phx.gbl...

0 new messages