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

Что мне нужно сделать, так это сделать так, чтобы приложение с графическим интерфейсом пользователя C# 2005 вызывало .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();
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
12
0
120 346
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот что вы ищете:

Сервис зависает на WaitForExit после вызова командного файла

Это вопрос о том, почему служба не может выполнить файл, но он показывает весь код, необходимый для этого.

Ладно, это больше похоже на это. Я попробую это сделать. Боковая панель - Вы когда-нибудь хотели, чтобы у языков программирования от MS были более длинные имена? Погуглить "C#" ".bat" в высшей степени бесполезно.

wergeld 26.12.2008 20:49

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

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

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

По сути, он просто направит букву после "echo" на вход командного файла.

Другие вопросы по теме