如何查看Process.Start()传递给可执行文件的参数

时间:2012-06-05 22:39:27

标签: c# process.start

我正在尝试使用Process.Start运行fortran可执行文件,但它无法运行。

Process proc = new Process();
string args = "<C:\\file.in> C:\\file.out";
proc.StartInfo = new ProcessStartInfo(AppName, args);
proc.Start();

如果我将这些参数粘贴到命令窗口中,应用程序将按预期运行。 proc.Start()没有按预期运行。

我有什么想法可以查看Start实际上作为参数传递的内容?我的直觉是这是引用问题。

可执行文件启动并挂起,所以我确信AppName正确传递,看起来像是一个参数问题。

我尝试将WorkingDirectory设置为此问题中建议的输入和输出文件:process.start() arguments但这不起作用。

2 个答案:

答案 0 :(得分:1)

使用<>命令行运算符进行重定向是一项由命令行处理器实现的功能。哪个是cmd.exe。使用其/ c参数只执行一个命令:

string args = "/c " + AppName + " < C:\\file.in > C:\\file.out";
proc.StartInfo = new ProcessStartInfo("cmd.exe", args);
proc.Start();

答案 1 :(得分:0)

您的 args 字符串正是作为可执行文件的参数传递的内容。您可以仔细检查它,阅读您的流程ProcessStartInfo.Arguments Property

类似的事情发生在我身上,也就是说,从命令行调用可执行文件并且从代码调用没有,结果发现当从命令行调用时,可执行文件在我的PC上运行 [C :] 驱动器,当从代码调用时,它在我的电脑的 [E:] 驱动器上运行,已经满了!

要检查应用程序用于运行可执行文件的目录,请使用Directory.GetCurrentDirectory Method