我有一个过程,需要一些参数。我希望它从C#开始。我在快捷方式中尝试了相同的参数并且它有效。另一方面,在c#中它没有,所以这里是参数。参数格式是正确的,但我在-k
时得到错误的参数错误ProcessStartInfo prf = new ProcessStartInfo("C:\\" + "argstest.exe");
prf.UseShellExecute =true;
prf.Arguments = "-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
Process.Start(prf);
进程启动,但立即关闭,因为应该测试的-k参数不会被发送到程序。 我尝试在-l之前添加一个“”空格但是同样的,也尝试了@“-l ...”
答案 0 :(得分:1)
尝试在arguments参数中使用verbatim string。像这样:
prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
答案 1 :(得分:1)
我测试了你的代码并没有发现任何问题。也许你发现这对追踪你的问题非常有用,我做了这个,你也可以这样做:
您尝试运行的控制台应用,我这样做了:
static void Main(string[] args)
{
foreach (var arg in args)
{
Console.WriteLine(arg);
}
Console.ReadLine();
}
从另一个控制台应用中,只需:
static void Main(string[] args)
{
ProcessStartInfo prf = new ProcessStartInfo("ConsoleApplication1.exe");
prf.UseShellExecute = true;
prf.Arguments = "-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
Process.Start(prf);
}
输出:
-1
http://test.tes1:testa@testb.testing.com:3333/
-k
testing
TYPE=0
USER=1
COUNT=10
这使我相信问题不在Process.Start()方面,而是在你的其他应用程序正在解析参数的方式。至于为什么快捷方式有效而且没有,也许你应该复制/粘贴你正在使用的快捷方式,而不是确定那条快捷方式。
答案 2 :(得分:0)
我发现最适合这种情况的方法是使用围绕命令的转义引用进行设置,如下所示:
string command = "ping -c 4 google.com";
ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");