Мне нужно, чтобы приложение C # 2005 GUI вызывало .bat и несколько файлов VBScript по запросу пользователя. Это просто временное решение до конца праздников, и я могу написать все это на C #. Я могу заставить файлы VBScript работать без проблем, но я не могу выполнить файл .bat. Когда я «щелкаю» в приложении C # для запуска .bat-файла, окно DOS открывается и закрывается очень быстро, а тестовый .bat-файл не выполняется - «Windows не распознает bat как внутреннюю или внешнюю команду» - это ошибка вернулся в поле DOS. Если я просто дважды щелкну по файлу .bat или запусту его вручную из командной строки, он выполнится. Мне также нужно, чтобы файл .bat выполнялся без вывода сообщений, если не требуется взаимодействие с пользователем - этот сценарий копирует файлы размером более 11k в папки на сетевом компьютере, и иногда Windows «забывает», если местом назначения является файл или каталог, и просит пользователя сообщить об этом. что это такое (это совсем другой вопрос, не обсуждаемый здесь ... не говоря уже о том, что меня это раздражает).
Пока в моем источнике C # есть следующее:
Process scriptProc = new Process();
if (File.Exists("c:\\scripts\\batchfile1.bat"))
{
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.Arguments = ("cmd.exe", "/C C:\\scripts\\batchfile1.bat"); // Wacky psuedo code //
scriptProc.Start();
scriptProc.WaitForExit(1500000);
scriptProc.Close();
}
if (!File.Exists("c:\\scripts\\batchfile1.bat"))
{
}
Я знаю, что этот код не работает - но по сути это то, что я хочу, чтобы он делал. То, что я смотрю, это что-то вроде этого для файлов .bat. Я предполагаю, что должен сказать системе использовать cmd для запуска .bat. Я в растерянности относительно того, как это сделать. Я проверил этот сайт , который предназначен для C # 2003. Мне не очень помогает, так как я очень зеленый с C #.
РЕДАКТИРОВАТЬ: Используя сообщение Кевина, я попытался его снова. Тот же сценарий решения из этого поста, но измененный для меня, так как мне не нужно перенаправлять:
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "C:\\scripts\\batchfile1.bat";
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.Start();
proc.WaitForExit();