2010-10-29 64 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