我在命令行中运行此应用程序并获得所需的结果
Helpdesk-02.exe /department it
但是我的C#代码(下面)似乎忽略了参数但是在没有命令行开关的情况下启动了应用程序
ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = @"Y:\Helpdesk-02.exe";
psi.Arguments = @"/department it";
psi.UseShellExecute = true;
Process.Start(psi).WaitForExit();
答案 0 :(得分:5)
@
字符是一个特殊的引用字符串,因此它的行为与标准字符串不同。从本质上讲,正在发生的过程是从命令行看起来像这样的过程:
> Helpdesk-02.exe "/department it"
或一个论点。删除@
符号会强制C#按预期解释字符串:
> Helpdesk-02.exe /department it
微妙但关键的区别。
@
运算符旨在使处理具有嵌入空格,反斜杠和其他必须在标准字符串中转义的字符的路径变得更加容易。从本质上讲,它会为你逃脱角色。这两个声明是等价的:
string pathToExplorer = @"C:\Program Files\Internet Explorer\iexplore.exe";
string escaped = "\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"";
在处理文件路径时,最好只使用@
运算符,并在处理参数时使用常规方法。
答案 1 :(得分:0)
ProcessStartInfo州的文档:
空格被解释为多个参数之间的分隔符。一个 包含空格的单个参数必须用引号括起来 标记,但这些引号不会传递给目标 应用