首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ProcessStartInfo参数

ProcessStartInfo参数
EN

Stack Overflow用户
提问于 2013-03-17 04:37:31
回答 3查看 14.2K关注 0票数 0

我有一个过程,它需要一些参数。我希望它从C#开始。我已经在快捷方式中尝试了相同的论点,并且它是有效的。另一方面,在c#中不是这样,所以这里有一些参数。参数格式是正确的,但是我在-k得到了一个错误的参数错误

代码语言:javascript
复制
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 ...”

EN

回答 3

Stack Overflow用户

发布于 2013-03-17 05:15:21

请尝试在参数参数中使用verbatim string。如下所示:

代码语言:javascript
复制
prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
票数 1
EN

Stack Overflow用户

发布于 2013-03-17 05:49:35

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

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

代码语言:javascript
复制
static void Main(string[] args)
{
    foreach (var arg in args)
    {
        Console.WriteLine(arg);
    }
    Console.ReadLine();
}

来自另一个控制台应用程序,就是这样:

代码语言:javascript
复制
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);
        }

输出:

代码语言:javascript
复制
-1
http://test.tes1:testa@testb.testing.com:3333/
-k
testing
TYPE=0
USER=1
COUNT=10

这让我相信问题不在Process.Start()方面,而是在你的其他应用程序解析参数的方式上。至于为什么快捷键起作用而这个不起作用,也许你应该复制/粘贴你正在使用的快捷键,对此不是很确定。

票数 1
EN

Stack Overflow用户

发布于 2014-12-31 09:10:16

我发现最有效的方法是在命令两边使用转义引号进行设置,如下所示:

代码语言:javascript
复制
string command = "ping -c 4 google.com";

ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15454456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档