0

我有一个过程,需要一些参数。我希望它从 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 ..."

4

3 回答 3

1

尝试在 arguments 参数中使用逐字字符串。像这样:

prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
于 2013-03-16T21:15:21.083 回答
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() 方面的原因,而在于您的其他应用程序解析参数的方式。至于为什么快捷方式有效而这无效,也许您应该复制/粘贴您正在使用的快捷方式,不太确定那个快捷方式。

于 2013-03-16T21:49:34.540 回答
0

我发现最适合这种情况的方法是在命令周围使用转义引号进行设置,如下所示:

string command = "ping -c 4 google.com";

ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");
于 2014-12-31T01:10:16.277 回答