1

我正在开发一种能够在特定驱动器上找到 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 字节

没有可用的错误消息。

4

1 回答 1

3

也许另一种给猫剥皮的方法会更容易?您当前的代码不值得麻烦。

// .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));
于 2012-12-13T20:39:35.270 回答