我正在开发一种能够在特定驱动器上找到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中的卷是数据卷序列号是7C64-9650
目录D:\ PATH 13/12/2012 01:49 PM 1,014,047,744 Archives.pst 4个文件1,355,919,360字节
没有错误消息可用。
答案 0 :(得分:3)
也许another way to skin the cat会更容易?你当前的代码不值得麻烦。
// .Net 2.0
string[] psts = Directory.GetFiles(".", "*.pst", SearchOption.AllDirectories);
// .Net 4.0+
var psts = Directory.EnumerateFiles(".", "*.pst", SearchOption.AllDirectories);
像这样使用:
MessageBox.Show(String.Join(", ", psts));