2016-12-22 8 views
4

Я видел похожие примеры, но не могу найти что-то точно, как моя проблема.C# Использовать Process.Start с параметрами AND пробелами в пути

мне нужно выполнить команду, как это из C#:

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "cmd"; 
startInfo.Arguments = "/K D:\\as df\\solver\\Swag.Console.exe -f D:\\as df\\solver\\2035.swag -p 5555"; 
Process.Start(startInfo); 

не работает.

startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f D:\\as df\\solver\\2035.swag -p 5555"; 

не работает.

startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f \"D:\\as df\\solver\\2035.swag\" -p 5555"; 

не работает.

startInfo.FileName = "\"D:\\as df\\solver\\Swag.Console.exe\""; 
startInfo.Arguments = " -f \"D:\\as df\\solver\\2035.swag\" -p 5555"; 

поэтому он работает, но я хочу CMD, это возможно?

enter image description here

+0

мне нужно Окно CMD не было закрыто после окончания приложения –

+0

'var proc = Process.Start (startInfo); proc.WaitForExit(); ' – Sameer

+0

_italic_ ** bold **' proc.WaitForExit(); ' –

ответ

3

Параметр/K аргумент выполнит команду, которая следует за ней. Это может быть целая команда, связанная с &, но это то, чего вам не хватало в ваших попытках, в этом случае они должны быть полностью заключены в двойные кавычки. См the SS64 cmd reference

Другими словами, команда должна выглядеть следующим образом:

cmd /K " here what ever you want to execute" 

Из-за передней и обратной косой черты вы быстро потерять след. Поэтому я вынул внешние двойные кавычки, обертывая String.Format, поэтому становится немного более понятным, какова должна быть ваша фактическая команда. Вот код, который я ожидаю, должен работать:

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "cmd"; 
startInfo.Arguments = String.Format(
    "/K \"{0}\"", 
    " \"D:\\as df\\solver\\Swag.Console.exe\" -f \"D:\\as df\\solver\\2035.swag\" -p 5555"); 
Process.Start(startInfo); 

Если Swag.Console.Exe бы просто сбросить свои аргументы консоли это будет результат:

-f 
D:\as df\solver\2035.swag 
-p 
5555 
+0

круто, он работает! –

Смежные вопросы