C# 将 Process.Start 与路径中的参数和空格一起使用
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 参数将执行其后的命令。它可以是很多用 & 链接的命令,但是,这就是你在尝试中遗漏的,在这种情况下,它们需要用双引号完全括起来。参见 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\solver35.swag
-p
5555
我见过类似的例子,但找不到与我的问题完全相同的东西。
我需要 运行 来自 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 参数将执行其后的命令。它可以是很多用 & 链接的命令,但是,这就是你在尝试中遗漏的,在这种情况下,它们需要用双引号完全括起来。参见 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\solver35.swag -p 5555