Следующий код выполнит скрипт VBScript без каких-либо подсказок или ошибок и без оболочки.
System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");
Более сложный метод будет использовать:
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();
Использования StartInfo
свойств даст вам достаточно зернистый доступ к настройкам процесса.
Если вы хотите, чтобы окна и т. Д. Отображались программой сценария, вам нужно использовать Windows Script Host. Вы также можете попробовать просто выполнить cscript
, но на некоторых системах он просто запустит редактор :)
Будет ли программа, вызывающая System.Diagnostics.Process.Start() зависать до тех пор, пока процесс не завершится, или продолжит ли процесс работать в фоновом режиме? – roydukkey 2011-05-06 14:04:38
Да. По умолчанию программа будет работать, не дожидаясь завершения процесса. Однако System.Diagnostics.Process.Start(). WaitForExit() заставит вызывающую программу ждать завершения процесса. – roydukkey 2011-05-06 16:17:17