【问题标题】:C#, Using "-" to add arguements for exe ran via CMDC#,使用“-”为通过 CMD 运行的 exe 添加参数
【发布时间】:2013-01-13 03:39:27
【问题描述】:

这里绝对没有 C# 经验,但被要求编辑 Windows 窗体应用程序并且有点卡住了!

单击表单上的按钮后,将运行以下代码:

private void RunHPPreSort_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start("cmd.exe", @"/k C:\Program Files\Hewlett-Packard\HP Exstream\HP Exstream 8.0.310\Engine.exe");            
}

这很好用,但我需要添加一个参数以允许 Engine.exe 获取控制文件的设置。我尝试将代码更改为:

private void RunHPPreSort_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start("cmd.exe", @"/k C:\Program Files\Hewlett-Packard\HP Exstream\HP Exstream 8.0.310\Engine.exe -CONTROLFILE=C:\Users\adam.pope\Desktop\Accenture\Control Files\Accenture Control File Step One.opt");            
}

我这样做是因为直接从命令行运行C:\Program Files\Hewlett-Packard\HP Exstream\HP Exstream 8.0.310\Engine.exe -CONTROLFILE=C:\Users\adam.pope\Desktop\Accenture\Control Files\Accenture Control File Step One.opt 效果很好。但是,当我通过 Windows 窗体应用程序使用它时,我在命令行中收到以下错误:

'C:\Program' is not recognized as an internal or external command, operable program or batch files.

似乎在参数前添加“-”会导致问题,但这是Engine.exe 接受参数的唯一方式。

有解决办法吗?对不起,如果它很明显,但我不知道我在 C# 世界中在做什么!

【问题讨论】:

  • 我尝试使用不同数量的引号来关闭第二个参数,但没有成功。
  • 添加了一个答案,但随后又被删除,这解决了我的问题,感谢添加它的人!谢谢,亚当。
  • 您能自己为未来的用户添加答案吗?是否添加了更多 " 引号?

标签: c# cmd arguments exe


【解决方案1】:

我不知道没有引号之前它是如何工作的,因为如果 cmd 有不带引号的空格,它就不会运行它。

尝试改用这个

System.Diagnostics.Process.Start("cmd.exe", "/k \"C:\\Program Files\\Hewlett-Packard\\HP Exstream\\HP Exstream 8.0.310\\Engine.exe\" -CONTROLFILE=C:\\Users\\adam.pope\\Desktop\\Accenture\\Control Files\\Accenture Control File Step One.opt");

您可能还必须引用参数,但这取决于您调用的程序如何处理带有空格的参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 2014-04-18
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多