Dmi*_*aev 5 c# arguments spaces process 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);
Run Code Online (Sandbox Code Playgroud)
不起作用。
startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f D:\\as df\\solver\\2035.swag -p 5555";
Run Code Online (Sandbox Code Playgroud)
不起作用。
startInfo.Arguments = "/K \"D:\\as df\\solver\\Swag.Console.exe\" -f \"D:\\as df\\solver\\2035.swag\" -p 5555";
Run Code Online (Sandbox Code Playgroud)
不起作用。
startInfo.FileName = "\"D:\\as df\\solver\\Swag.Console.exe\"";
startInfo.Arguments = " -f \"D:\\as df\\solver\\2035.swag\" -p 5555";
Run Code Online (Sandbox Code Playgroud)
所以它有效,但我想要 CMD,这可能吗?

/K 参数将执行其后面的命令。它可能是用 & 链接的大量命令,但是,这就是您在尝试中缺少的内容,在这种情况下,它们需要完全用双引号引起来。请参阅 SS64 cmd 参考
换句话说,该命令应如下所示:
cmd /K " here what ever you want to execute"
Run Code Online (Sandbox Code Playgroud)
由于正斜杠和反斜杠的存在,你很快就会迷失方向。因此,我取出了包裹 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);
Run Code Online (Sandbox Code Playgroud)
如果 Swag.Console.Exe 只是将其参数转储到控制台,结果将是:
Run Code Online (Sandbox Code Playgroud)-f D:\as df\solver\2035.swag -p 5555
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |