VicQA Ответов: 1

Выполнение пакетного файла из консольного приложения C#.


Всем Привет,

Я пытаюсь запустить batchfile, который содержит команды для запуска исполняемого файла NUnit console runner. Я использую метод system. diagnostics.process для запуска пакетного файла

Вот код:

Путь, используемый в методе:
C:\Users\Victor\workstride-automated-tests\DextapAutomation\SeleniumDemo\bin\Debug\../../Batchfiles/

Пакетник Название: RandomBatchfile.летучая мышь


ProcessStartInfo startInfo = новый ProcessStartInfo();
свойство StartInfo.WorkingDirectory = каталог, указанный выше
свойство StartInfo.CreateNoWindow = false;
свойство StartInfo.Именем = RandomBatchfile.летучая мышь
свойство StartInfo.WindowStyle = ProcessWindowStyle.Скрытый;
свойство StartInfo.Аргументы = " консольное приложение C-Sharp";

пробовать
{
// Начните процесс с указанной нами информации.
// Вызовите WaitForExit, и тогда оператор using закроется.
using (Process exeProcess = процесс.Start (startInfo))
{
exeProcess.WaitForExit();
}
}
catch (исключение e)
{
Приставка.метод WriteLine(
@"Что-то пошло не так при попытке запустить тесты,
вот исключение: {0} ", e. ToString());
}

Что я уже пробовал:

Когда я запускаю программу, она говорит, что не может найти указанный файл, а каталог, на который она ссылается, является родным каталогом для решения, а не каталогом, который я указываю выше. Я проверил, устанавливается ли каталог до начала процесса, и это так, поэтому я в тупике. Пожалуйста, Помогите !

Philippe Mori

Неужели так трудно использовать блок кода для правильного форматирования вашего кода?..

1 Ответов

Рейтинг:
2

OriginalGriff

Почему вы используете два относительных кода каталогов в абсолютной спецификации папок?
Попробуй:

Process.Start(@"C:\Users\Victor\workstride-automated-tests\DextapAutomation\SeleniumDemo\Batchfiles\RandomBatchFile.bat", "C-Sharp Console application");
И посмотрим, сработает ли это.


VicQA

Причина, по которой я использую два относительных каталога, заключается в том, что для того, чтобы команды batchfile работали, рабочий каталог должен быть установлен в расположение библиотеки dll тестового решения, иначе он не будет работать. Даже с вашим предложенным исправлением он все равно ломается:

Что-то пошло не так при попытке запустить тесты,
вот исключение: система.ComponentModel. Win32Exception (0x80004005): система не может найти указанный файл
в системе.Диагностика.Процесс.StartWithShellExecuteEx(изменение панели информацию)
в системе.Диагностика.Процесс.Начать()
в системе.Диагностика.Процесс.Start(ProcessStartInfo startInfo)
в системе.Диагностика.Процесс.Start(String fileName, String arguments)
в TestRunner.Methods.Util. ExecuteProcess(String client, String directory, String Filename) в C:\Users\Victor\workstride-automated-tests\DextapAutomation\SeleniumDemo\ConsoleRunner\TestRunner\TestRunner\Util.cs:line 115

OriginalGriff

Это не причина для использования бита " .. / .. / "в вашем пути - он просто заходит так далеко и говорит" родитель родителя " каталога, в который вы попали. Наличие этого там делает его похожим на то, что вы не уверены, как работают каталоги! :смеяться:
Поэтому проверьте фактическую папку, на которую ссылается строка, и убедитесь, что она существует и содержит .BAT-файл, который вы ожидаете запустить. Используйте отладчик, чтобы проверить общую строку и вставить ее в проводник, чтобы открыть папку.

VicQA

Я понял это сам, спасибо за Ваш вклад.