Подтвердить что ты не робот

Как выполнить .bat файл из приложения Windows Forms?

Мне нужно сделать, чтобы приложение GUI С# 2005 вызывало .bat и несколько файлов VBScript по запросу пользователя. Это всего лишь стоп-лосс-решение до конца праздников, и я могу написать все это на С#. Я могу заставить файлы VBScript выполнять без проблем, но я не могу выполнить файл .bat. Когда я "click" в приложении С# для запуска .bat файла, окно DOS открывается и закрывается очень быстро, а тестовый .bat файл не выполняется - "Windows не распознает bat как внутреннюю или внешнюю команду" - это ошибка возвращается в поле DOS. Если я просто дважды щелкните файл .bat или вручную запустил его из командной строки, которую он выполнил. Мне также нужно, чтобы файл .bat выполнялся молча, если не требуется взаимодействие с пользователем - этот script копирует файлы 11k + в папки на сетевой машине, а иногда Windows "забывает", если пункт назначения является файлом или каталогом и просит пользователя скажите это, что это (это целый другой вопрос, не обсуждаемый здесь... не говоря уже о том, что меня это раздражает).

До сих пор в моем источнике С# я имел это:

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. Я не понимаю, как это сделать. Я проверил этот сайт, который для С# 2003. Мне не очень помогает, так как я очень зеленый с С#.

EDIT: используя Kevin post, я снова попытался. То же решение script из этой публикации, но изменено для меня, так как мне не нужно перенаправлять:

 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();
4b9b3361

Ответ 2

Для проблемы, с которой вы сталкиваетесь в пакетном файле, спрашиваете у пользователя, является ли место назначения папкой или файлом, если вы знаете ответ заранее, вы можете сделать как таковой:

Если пунктом назначения является файл: echo f | [путь к пакетному файлу]

Если папка: echo d | [путь к пакетному файлу]

Он по существу просто протрубит букву после "эха" на вход командного файла.