如何将FINDSTR的输出从C#保存到文本文件?

时间:2019-02-18 14:54:03

标签: c# cmd findstr

我正在尝试从C#(Windows窗体)运行findstr命令。

我已经在命令提示符中正常尝试了它,效果很好。

string CD = @"P:\FIles";
Process p = new Process();
p.StartInfo = new ProcessStartInfo("findstr.exe");
p.StartInfo.Arguments = "-M -S" + " " + quote + txtSearch.Text + quote + " " + quote+"dummy.txt"+quote + " > " + "C:\\Temp\\results.txt" ;
p.StartInfo.WorkingDirectory = CD;
p.StartInfo.ErrorDialog = true;
p.StartInfo.UseShellExecute = false;

p.Start();

p.WaitForExit();

我想将输出保存到具有特定位置的另一个文本文件中。

如果我能以某种方式将结果直接返回到它自己的形式,并且也许将每一行复制到一个列表框中,那会更好。

1 个答案:

答案 0 :(得分:0)

您可以通过阅读“ StandardOutput”流来阅读控制台应用程序的输出。但是,您必须先将StartInfo.RedirectStandardOutput属性设置为“ true”。

在您的情况下:

    string CD = @"P:\FIles";
    Process p = new Process();
    p.StartInfo = new ProcessStartInfo("findstr.exe");
    p.StartInfo.Arguments = "-M -S" + " " + quote + txtSearch.Text + quote + " " + quote+"dummy.txt"+quote + " > " + "C:\\Temp\\results.txt" ;
    p.StartInfo.WorkingDirectory = CD;
    p.StartInfo.ErrorDialog = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;

    p.Start();

    p.WaitForExit();

    string sTest = p.StandardOutput.ReadToEnd();