El siguiente código ejecutará una secuencia de comandos de VBScript sin indicaciones ni errores y sin el logotipo de la estructura.
System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");
Una técnica más compleja sería utilizar:
Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.WorkingDirectory = @"c:\scripts\"; //<---very important
scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
scriptProc.Start();
scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
scriptProc.Close();
Usando las propiedades StartInfo
le dará acceso muy granular a la configuración del proceso.
Debe usar Windows Script Host si desea que Windows, etc., se muestren mediante el programa de script. También podría intentar simplemente ejecutar cscript
directamente, pero en algunos sistemas simplemente lanzará el editor :)
¿Se bloqueará el programa que llama a System.Diagnostics.Process.Start() hasta que el proceso finalice o continuará al dejar el proceso para ejecutarse en segundo plano? – roydukkey
Sí. Por defecto, el programa se ejecutará sin esperar a que el proceso finalice. Sin embargo, System.Diagnostics.Process.Start(). WaitForExit() obligará al programa que realiza la llamada a esperar a que el proceso finalice. – roydukkey
Creo que el nombre del archivo tiene que ser el nombre del archivo. es decir, no cscript – Spock