【问题标题】:ProcessStartInfo argumentsProcessStartInfo 参数
【发布时间】:2013-03-05 11:15:33
【问题描述】:

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

【问题讨论】:

  • 你的非工作 C# 代码在哪里?
  • 它不起作用没有帮助。跟我们多说些。告诉我们它是如何失败的。显示其余代码。
  • 好吧,进程退出,因为他没有得到应该测试的 -k 参数。
  • 与其在 cmets 中滴灌我们,不如编辑问题并修复它。
  • 一点说明:从字符串创建路径更好的方法是:Path.Combine(@"C:\","argstest.exe")

标签: c# processstartinfo


【解决方案1】:

尝试在 arguments 参数中使用verbatim string。像这样:

prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";

【讨论】:

  • @user1422473 请发布更多 C# 代码(编辑问题)。我们需要查看行,您从哪里开始流程。可能有问题。
  • 在使用逐字字符串时,没有任何字符或转义序列会改变其含义,因此仅此一项更改就能使其发挥作用是相当令人惊讶的。
【解决方案2】:

我测试了您的代码,没有发现任何问题。也许您发现这对跟踪您的问题很有用,我这样做了,您也可以这样做:

您尝试运行的控制台应用程序,我这样做了:

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() 方面,而在于您的其他应用程序解析参数的方式。至于为什么快捷方式有效而这无效,也许您应该复制/粘贴您正在使用的快捷方式,不太确定那个。

【讨论】:

    【解决方案3】:

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

    string command = "ping -c 4 google.com";
    
    ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2018-08-03
      • 2014-09-09
      • 2021-12-31
      相关资源
      最近更新 更多