12

我正在尝试从命令行提示符运行此命令:

"D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless"

当我在命令行控制台中键入它时,它可以完美运行。

然而,当我试图让它在 C# 应用程序中工作时,它失败了。我尝试了以下操作,但似乎上面的命令没有以某种方式执行:

string fijiCmdText = "D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText);

任何人都知道如何改变它来工作?谢谢。

4

3 回答 3

16

问题已按照 Chris Haas 指出的方向解决。这并不意味着其他答案不起作用,它只是意味着问题可以至少以一种方式解决。

在这里,只需添加"/C "代码,它应该可以工作:

无效的原件:

string fijiCmdText = "D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText)

;

当前有效的代码:

string fijiCmdText = "/C D:\\fiji\\fiji.exe -macro D:\\fiji\\macros\\FFTBatch.ijm --headless";
System.Diagnostics.Process.Start("cmd.exe", fijiCmdText);

这是Chris Haas 提到的参考资料。EDIT3

于 2014-01-23T15:01:47.900 回答
11

您不必运行 cmd.exe,只需创建ProcessStartInfo对象并将命令及其参数传递给它。像这样:

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("your command", "parameters");

这是一个示例,向您展示如何执行此操作:

System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("tree.com", "/f /a");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = info;
p.Start();
p.WaitForExit();

所以在你的情况下,这是你的命令:"D:\\fiji\\fiji.exe"这是你的命令参数或参数:@"-macro D:\\fiji\\macros\\FFTBatch.ijm --headless"

于 2014-01-22T22:41:23.763 回答
4

尝试这个:

ProcessStartInfo info = new ProcessStartInfo(@"D:\fiji\fiji.exe",@"-macro D:\fiji\macros\FFTBatch.ijm --headless");
Process process = new Process();
process.StartInfo = info;
process.Start();
于 2014-01-22T22:51:50.563 回答