我有一个程序可以从设置文件中接收这样的内容:
"C:\Files\App 1\App.exe" "-param1:true -blah"
它接收全部为1字符串,但C#中的Process对象需要程序和参数单独传递。有没有一种简单的方法在C#中解析它,或者只是传递语句而不先解析它?
答案 0 :(得分: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();
答案 1 :(得分:0)
应该是这样的。
Process.Start(new ProcessStartInfo() { FileName = @"C:\Files\App 1\App.exe", Arguments = "-param1:true -blah" });
如果它全部作为一个字符串出现,则可以对第一个空格字符的索引进行子串。