【发布时间】:2021-09-13 05:45:42
【问题描述】:
我正在将 cmd 输出结果写入日志文件,这样做时会得到重复的结果。所以这样做是从标准输出中抓取一行,如果该字符串至少包含该行的文本,它将在日志文件中打印它是成功的。
但是,它还包括我不想要的前 4 个实例。我可以看到这个问题,因为 else 语句意味着它将显示“失败”。
我的问题是,我如何只希望程序只读取特定的行?
这是我的代码:
start = DateTime.Now.ToString("HH:mm:ss tt");
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c command here",
UseShellExecute = false,
RedirectStandardOutput = true
}
};
process.Start();
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
Console.WriteLine(line);
if (line.Contains("Output goes here."))
{
finish = DateTime.Now.ToString("HH:mm:ss tt");
PrintRow("Task 1", start, finish, "SUCCESS");
PrintLine();
}
else
{
finish = DateTime.Now.ToString("HH:mm:ss tt");
PrintRow("Task 1", start, finish, "FAILURE");
PrintLine();
}
process.WaitForExit();
我得到的日志文件结果:
|任务 1 |下午 15:23:25 |下午 15:23:30 |失败 |
|任务 1 |下午 15:23:25 |下午 15:23:31 |失败 |
|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |失败 |
|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |失败 |
|任务 1 |下午 15:23:25 |下午 15 点 23 分 32 秒 |成功 |
【问题讨论】:
标签: c# .net logging cmd output