簡體   English   中英

從C#運行dos命令行?

[英]running dos command line from C#?

我試圖從命令行提示符運行此命令:

"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);

任何人都知道如何改變它的工作? 謝謝。

克里斯哈斯指出的方向解決了這個問題。 這並不意味着其他答案不起作用,它只是意味着問題至少可以通過一種方式解決。

在這里,只需在代碼中添加"/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

您不必運行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"

嘗試這個:

ProcessStartInfo info = new ProcessStartInfo(@"D:\fiji\fiji.exe",@"-macro D:\fiji\macros\FFTBatch.ijm --headless");
Process process = new Process();
process.StartInfo = info;
process.Start();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM