2015-11-05 44 views
1

我想执行这个命令:的iconv -f -t的Unicode UTF8 input.txt中> output.txt的如何执行Linux命令行的C#单

但我得到这个错误:在/ usr/bin中/的iconv:无法打开输入文件'>':没有这样的文件或目录

  ProcessStartInfo psi = new ProcessStartInfo(); 
      psi.FileName = "/usr/bin/iconv"; 
      psi.UseShellExecute = false; 
      psi.Arguments = "-f unicode -t utf8 /tmp/test.txt > Desktop/output.txt"; 
      Process p = Process.Start(psi); 
      p.WaitForExit(); 
      p.Close(); 
+0

为什么要将它设置为重定向标准输出,并且还尝试将输出发送到文本文件? –

+0

只是我正在休耕一个例子,但我不使用它 – Silva

回答

3

您只能使用<>|运营商壳内。 shell(比如bash)是实际解析这些并执行重定向的东西。试试这个代码:

... 
ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "/usr/bin/iconv"; 
psi.UseShellExecute = false; 
psi.Arguments = "-f unicode -t utf8 /tmp/test.txt"; 
psi.RedirectStandardOutput = true; 
Process p = Process.Start(psi); 
Console.WriteLine(p.StandardOutput.ReadToEnd()); 
p.WaitForExit(); 
p.Close(); 
... 

我很抱歉如果这段代码无法正常工作,我个人很少用C#编程。您可能还可以设置psi.UseShellExecute = true。根据MSDN,这将使用系统shell(cmd.exe)启动该程序。这可能适用于你,虽然我还没有测试过。

祝你好运!

+0

工作就像一个魅力! –