1

特定のドライブで PST を検索できるツールを開発中です。このコードは、テスト目的のためだけにプロジェクト パスを使用しています。

私の問題は、外部コマンド プロセッサでシェル コマンドの実行の出力を取得しようとすると、最初の 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 に答える