簡體   English   中英

如何在C#中向cmd發送命令

[英]How to send commands to cmd in C#

我正在使用C#編寫程序,我需要打開cmd.exe,發送命令並獲得答案。 我四處搜索並找到一些答案來使用diagnostics.process。

現在,我有兩個問題:

  1. 當我得到進程的輸出時,輸出不會顯示在cmd consoule本身上。
  2. 我需要在系統上調用g95編譯器。 當我從cmd手動調用它時,它被調用並且運行良好,但是當我以編程方式調用它時,我有這樣的錯誤:“g95不被識別為內部或外部......”

另一方面,我只找到了如何通過參數和process.standardInput.writeline()將命令發送到cmd.exe。 有沒有更方便的方法使用。 我需要在cmd.exe打開時發送命令。

我發送的代碼的一部分可能會有所幫助:

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo = new System.Diagnostics.ProcessStartInfo("cmd.exe");

//myProcess.StartInfo.Arguments = "/c g95";
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(myProcess_OutputDataReceived);
myProcess.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(myProcess_ErrorDataReceived);

myProcess.Start();
myProcess.BeginOutputReadLine();
myProcess.BeginErrorReadLine();
myProcess.StandardInput.WriteLine("g95 c:\\1_2.f -o c:\\1_2.exe");

您可以直接指定g95並將所需的命令行參數傳遞給它。 您不需要先執行cmd 可能無法識別該命令,因為未加載用戶配置文件中的設置。 嘗試將StartInfo的屬性LoadUserProfile設置為true。

myProcess.StartInfo.LoadUserProfile = true;

這也應該正確設置path變量。 您的代碼看起來像這樣:

Process myProcess = new Process();
myProcess.StartInfo = new ProcessStartInfo("g95");

myProcess.StartInfo.Arguments = "c:\\1_2.f -o c:\\1_2.exe"
myProcess.StartInfo.UseShellExecute = true;
myProcess.StartInfo.LoadUserProfile = true;
myProcess.StartInfo.RedirectStandardInput = true;
myProcess.StartInfo.RedirectStandardOutput = true;
myProcess.StartInfo.RedirectStandardError = true;
myProcess.OutputDataReceived += myProcess_OutputDataReceived;
myProcess.ErrorDataReceived += myProcess_ErrorDataReceived;

myProcess.Start();
myProcess.BeginOutputReadLine();
myProcess.BeginErrorReadLine();

你收到了錯誤

“g95不被認為是內部或外部......”

因為您尚未在PATH環境變量中添加g95.exe的路徑。 如果打開命令提示符並鍵入g95,您將得到類似的結果。 這是一個解釋它的G95 Windows FAQ頁面的鏈接

暫無
暫無

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

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