2010-10-29 66 views
0

我是c#的新手,並試圖從c#腳本運行一個名爲mediainfo的cmd工具實用程序。我試圖通過輸出執行結果到一個文本文件(file1out.txt)重定向,並從CMD控制檯直行以下工作時: C:\programs\mediainfo_cli\mediainfo.exe --Inform=file://C:\temp\template.txt "C:\temp\3gp\file1.3gp" > c:\temp\3gp\file1out.txt從Visual Studio 2008運行cmd/c#

然而,從腳本這是行不通的。

private void button1_Click(object sender, EventArgs e) 
    { 
     LaunchCommandLineApp(); 
    } 

    static void LaunchCommandLineApp() 
    { 
     // Use ProcessStartInfo class 
     ProcessStartInfo startInfo = new ProcessStartInfo(); 

     string strArg = @" --Inform=file://C:\temp\template.txt C:\temp\3gp\file1.3gp > C:\temp\3gp\file1out.txt"; 

     //startInfo.FileName = "calc.exe"; 
     startInfo.FileName = "C:\\Programs\\mediainfo_cli\\mediainfo.exe"; 
     startInfo.Arguments = strArg; 
     startInfo.UseShellExecute = false; 
     startInfo.RedirectStandardOutput = true; 

     try 
     { 
      using (Process exeProcess = Process.Start(startInfo)) 
      { 
       exeProcess.WaitForExit(); 
      } 
     } 

     catch 
      { 
       MessageBox.Show("Error"); 
      } 
     } 

回答

3

重定向操作符(>)是Windows命令處理器的一項功能。您實際上並沒有使用Process.Start調用命令處理器(除非您啓動「cmd.exe」)。要使用stdio重定向,您必須從StandardOutput流中讀取它。這裏說明了如何做到這一點的例子:

http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx

你幾乎得到了它!

+0

謝謝保羅,明白了! :) – user491805 2010-11-01 16:55:01