0

这里绝对没有 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# 世界中在做什么!

4

1 回答 1

0

我不知道它在没有任何引号之前是如何工作的,因为如果 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");

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

于 2013-01-29T15:28:19.017 回答