2012-01-04 40 views
1

我想用參數-a,-c和3400 @ takd運行lmutil.exe,然後將命令行提示生成的所有內容放入文本文件中。我在下面有沒有工作。在C#中使用新進程(),如何將命令行文本複製到文本文件?

如果我通過工藝步驟,我得到的錯誤,如「扔類型System.InvalidOperationException的一個例外」

 Process p = new Process(); 
     p.StartInfo.FileName = @"C:\FlexLM\lmutil.exe"; 
     p.StartInfo.Arguments = "lmstat -a -c [email protected]>Report.txt"; 
     p.Start(); 
     p.WaitForExit(); 

所有我想要的是要寫入的命令行輸出REPORT.TXT

+0

'3400 @ tkad'和'> Report.txt'之間的空間怎麼樣? – 2012-01-04 18:24:54

+0

又是什麼> for在34000 @ tkad – MethodMan 2012-01-04 18:25:14

+0

Filename =「cmd.exe」,Arguments =「/cc:\flex..yadayada> Report.txt」 – 2012-01-04 18:35:19

回答

2

要獲得Process輸出,您可以使用StandardOutput記錄的屬性here

然後你就可以將它寫入文件:

Process p = new Process(); 
p.StartInfo.RedirectStandardOutput = true; 
p.StartInfo.UseShellExecute = false; 
p.StartInfo.FileName = @"C:\FlexLM\lmutil.exe"; 
p.StartInfo.Arguments = "lmstat -a -c [email protected]"; 
p.Start(); 
System.IO.File.WriteAllText("Report.txt", p.StandardOutput.ReadToEnd()); 
p.WaitForExit(); 
p.Close(); 
+1

好吧,但是然後從參數中刪除'> Report.txt'。 – 2012-01-04 18:33:21

+0

這是工作。我曾以爲它會把它放在lmutil.exe的目錄中。相反,它在我正在運行的C#程序的bin文件夾中。謝謝 – Brandon 2012-01-04 18:47:02

1

不能使用>通過過程來重定向,您必須使用StandardOutput。另請注意,要使其工作StartInfo.RedirectStandardOutput必須設置爲true。

相關問題