-1
在命令提示符下進行原始測試時,我能夠將7za列表命令的結果與findstr一起輸出到文本文件,並且我在我的應用程序中需要這種相同的行爲。如何以編程方式執行7za list命令並將結果輸出到文件?
執行7za.exe
直接與其他命令如findstr
或重定向運算符>>
導致exit code 7
。
如何以編程方式執行7za命令(C#),以基於findtr命令列出內容並最終將這些結果寫入文本文件?
在命令提示符下進行原始測試時,我能夠將7za列表命令的結果與findstr一起輸出到文本文件,並且我在我的應用程序中需要這種相同的行爲。如何以編程方式執行7za list命令並將結果輸出到文件?
執行7za.exe
直接與其他命令如findstr
或重定向運算符>>
導致exit code 7
。
如何以編程方式執行7za命令(C#),以基於findtr命令列出內容並最終將這些結果寫入文本文件?
經過一番研究和測試後,我能夠運行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();
只是一個通知:如果您正在編寫Windows服務,cmd將無法可靠地運行。通過調用cmd,系統會假設您處於交互模式。然而,相同的效果可以通過類似的代碼完成:直接調用「7za.exe」(processStartInfo.FileName =「.../7za.exe」)並使用StreamWriter編寫StandardOutput –
@HoàngLong - 感謝您的建議!我必須檢查一下。 –