Запуск командной строки dos из С#?

Я пытаюсь запустить эту команду из командной строки:

"D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless"

Он отлично работает, когда я печатаю его в командной строке.

Однако, когда я пытался заставить его работать с приложением С#, он не удался. Я пробовал следовать, но кажется, что команда выше не выполнена каким-то образом:

string fijiCmdText = "D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText);

Кто-нибудь знает, как изменить его на работу? Спасибо.

Ответ 1

Проблема была решена так же, как указывал Крис Хаас. Это не означает, что другие ответы не работают, это просто означает, что проблема может быть решена по крайней мере одним способом.

Вот он, просто добавив "/C " в код, и он должен работать:

Оригинал, который не работает:

string fijiCmdText = "D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText)

;

Текущий код, который работает:

string fijiCmdText = "/C D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText);

Вот ссылка , упомянутая Крисом Хаасом. См. EDIT3

Ответ 2

Вам не нужно запускать cmd.exe, просто создайте объект ProcessStartInfo и передайте команду с его параметрами. Вот так:

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("your command", "parameters");

Вот пример, который показывает вам, как это сделать:

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("tree.com", "/f /a");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = info;
p.Start();
p.WaitForExit();

Итак, в вашем случае это ваша команда: "D:\\fiji\\fiji.exe" и это ваши параметры или аргументы команды: @"-macro D:\\fiji\\macros\\FFTBatch.ijm --headless"

Ответ 3

Попробуйте следующее:

ProcessStartInfo info = new ProcessStartInfo(@"D:\fiji\fiji.exe",@"-macro D:\fiji\macros\FFTBatch.ijm --headless");
Process process = new Process();
process.StartInfo = info;
process.Start();