我正在研究能夠在特定驅動器上找到PST的工具。這段代碼僅僅是爲了測試目的而採用了項目路徑。爲什麼這段代碼沒有收到外部命令的完整輸出?
我的問題是,當我試圖得到一個shell命令的執行輸出在外部指令的處理器,我只得到了2個第一行:
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = "/C dir /s *.pst";
p.Start();
string output = p.StandardOutput.ReadToEnd();
MessageBox.Show(output);
p.WaitForExit();
我的結果:
分冊驅動d是數據卷序列號是7C64-9650
預期結果:
分冊驅動d是數據卷序列號是d的7C64-9650
指南:\ PATH 13/12/2012下午一點49 1014047744 Archives.pst 4文件(一個或多個)1355919360個字節
沒有錯誤消息可用。
我已經試過我的電腦上。工作正常。我看到「驅動器D中的卷是數據卷序列號是7CXX-XXXX」。但是我用Console.WriteLine(輸出)而不是MessageBox.Show(輸出) –
不應該在'p.WaitForExit();'之後執行'string output = p.StandardOutput.ReadToEnd();' –
@nick_w - 不,可能會導致死鎖。它在文檔中討論:http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx –