2015-06-08 16 views
-1

在命令提示符下進行原始測試時,我能夠將7za列表命令的結果與findstr一起輸出到文本文件,並且我在我的應用程序中需要這種相同的行爲。如何以編程方式執行7za list命令並將結果輸出到文件?

執行7za.exe直接與其他命令如findstr或重定向運算符>>導致exit code 7

如何以編程方式執行7za命令(C#),以基於findtr命令列出內容並最終將這些結果寫入文本文件?

回答

0

經過一番研究和測試後,我能夠運行cmd.exe並將命令寫入進程。我也不必致電exit

Process cmdProcess = new Process(); 
ProcessStartInfo processStartInfo = new ProcessStartInfo(); 
processStartInfo.FileName = "cmd.exe"; 
processStartInfo.RedirectStandardInput = true; 
processStartInfo.UseShellExecute = false; 

cmdProcess.StartInfo = processStartInfo; 
cmdProcess.Start(); 

String sevenZipListFindStrCommand = "Library\\7za.exe l \"C:\\temp\\testSource\\archive.7z\" -pXYZ | findstr /i VM >> C:\\temp\\output.txt"; 
using (StreamWriter streamWriter = cmdProcess.StandardInput) 
{ 
    if (streamWriter.BaseStream.CanWrite) 
    { 
     streamWriter.WriteLine(sevenZipListFindStrCommand); 
    } 
} 

cmdProcess.WaitForExit(); 
+0

只是一個通知:如果您正在編寫Windows服務,cmd將無法可靠地運行。通過調用cmd,系統會假設您處於交互模式。然而,相同的效果可以通過類似的代碼完成:直接調用「7za.exe」(processStartInfo.FileName =「.../7za.exe」)並使用StreamWriter編寫StandardOutput –

+0

@HoàngLong - 感謝您的建議!我必須檢查一下。 –

相關問題