[英]C# Use Process.Start with parameters AND spaces in path
我看过类似的示例,但是找不到与我的问题完全相同的东西。
我需要从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,这可能吗?
/ K参数将执行其后面的命令。 可能有很多与&链接的命令,但是,这是您在尝试中缺少的,在这种情况下,需要将它们完全用双引号引起来。 请参阅SS64 cmd参考
换句话说,命令应如下所示:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.