2009-09-22 4 views
1

У меня есть программа, которая получает что-то вроде этого из файла настроек:Запуск нового процесса с аргументами

"C:\Files\App 1\App.exe" "-param1:true -blah" 

Он принимает все это как 1 строку, а объект процесса в C# нужна программа и аргументы передается отдельно. Есть ли простой способ в C# для синтаксического анализа этого или способ просто передать оператор, как он, без его разбора?

ответ

2

Как насчет этого?

var pattern = "\".*?\""; 
var regex = new Regex(pattern); 
var cmdString = "\"C:\\Files\\App 1\\App.exe\" \"-param1:true -blah\""; 

var matches = regex.Matches(cmdString) 
        .OfType<Match>() 
        .Select(m => m.Value.Trim('\"')) 
        .ToArray(); 

var cmd = matches[0]; 
var arg = matches[1]; 

var proc = Process.Start(cmd, arg); 
if (proc.Start()) 
    proc.WaitForExit(); 
0

Должно быть что-то вроде этого.

 
Process.Start(new ProcessStartInfo() { FileName = @"C:\Files\App 1\App.exe", Arguments = "-param1:true -blah" }); 

Если все это как одна строка, вы можете подстроить по индексу первого символа пробела.

+0

кроме, если пробел находится в каталоге \ имя файла –

+0

Это не будет работать с путями, в которых есть пробел. –

+0

Да, это полностью сошло с ума. –

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