У меня есть исполняемая команда стороннего разработчика, которая входит в мое приложение winform. Команда помещается в каталог под названием «инструменты» из каталога, в котором выполняется приложение.Выполнение пользовательских команд из командной строки в winform C#
Например, если my winform mytestapp.exe находится в каталоге D: \ apps \ mytestapp, то путь к третьей стороне - D: \ apps \ mytestapp \ tools \ mycommand.exe. Я использую Application.StartupPath для определения местоположения mytestapp.exe, чтобы его можно было запускать из любого места.
Я выполняю эту команду, запустив процесс - System.Diagnostics.Process.Start и выполнив то же самое с помощью командной строки. Для запуска команды требуются дополнительные параметры.
Проблема я столкнулся в том, если путь к моему заявлению и команда не имеет каких-либо пробелов в нем, он отлично работает
Например, если мое приложение и команда помещается, как показано ниже , она работает D: \ Apps \ mytestapp \ mytestapp.exe D: \ приложения \ mytestapp \ инструменты \ mycommand.exe "параметр1" "параметр2" - это работает
однако, если у меня есть пробелы в пути , он не работает
C: \ Documents and Settings \ mytestapp \ tools \ mycommand.exe "param eter1 "" parameter2 "- не работает C: \ Documents and Settings \ mytestapp \ tools \ mycommand.exe" параметр1 parameter2 "- не работает " C: \ Documents and Settings \ mytestapp \ tools \ mycommand.exe "" parameter1 parameter2 "- не работает " C: \ Documents and Settings \ mytestapp \ tools \ mycommand.exe parameter1 parameter2 "- не работает
Я попытался использовать двойные кавычки для выполнения команды, как показано выше, и это не сработает. Итак, как мне выполнить свою пользовательскую команду. Любые входы или работа вокруг этой проблемы? Спасибо заранее.
Вот код для начала процесса
try
{
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
proc.WaitForExit();
}
catch (Exception objException)
{
// Log the exception
}
Какое исключение? Можете ли вы поделиться своим кодом вокруг Process.Start – rene
Показать свой установочный код processstartinfo, и вы должны получить быстрые ответы :) –
@retailcoder, я не думаю, что в processstartinfo есть ошибка, так как я получаю требуемый вывод, когда нет белые пробелы на пути. –