如何使用 C# 仅显示批处理文件输出的特定行
How can I display only a particular line of the batch file output using C#
我正在创建一个 C# windows 表单应用程序,它将自动检测连接到 COM 端口的设备并在标签或文本框中显示 COM 端口号。为了更容易实施,我创建了一个批处理文件,它为我提供了有关 COM 端口的信息。所以我 运行 批处理文件并将输出存储在一个名为 "result" 的字符串中。出于验证目的,我使用 "MessageBox.Show(result)" 显示输出。下一步是我想使用标签在 windows 表单中仅显示 "result" 的特定行。
//label1.text = 结果的第 9 行//我正在寻找这样的东西
我该怎么做?我的做法对吗?
附上代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Programming();
}
private void Programming()
{
var processInfo = new ProcessStartInfo(@"C:\Users\vaka\Desktop\COM_Port_Detection.bat");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
//processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
using (Process process = Process.Start(processInfo))
{
//
// Read in all the text from the process with the StreamReader.
//
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
MessageBox.Show(result);
}
}
}
}
你必须"parse"你从其他进程中读取的内容来提取所需的information/line。
一个简单的实现可能如下所示:
string result = reader.ReadToEnd();
string[] lines = result.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
if (lines.Length >= 9)
{
Console.WriteLine(lines[8]);
}
else
{
// handle error
}
你可以分别读取进程返回的每一行,然后只显示第9行:
using (StreamReader reader = process.StandardOutput)
{
var lines = new List<string>();
string line;
while ((line = reader.ReadLine()) != null)
lines.Add(line);
Console.Write(lines[8]);
MessageBox.Show(lines[8]);
}
我正在创建一个 C# windows 表单应用程序,它将自动检测连接到 COM 端口的设备并在标签或文本框中显示 COM 端口号。为了更容易实施,我创建了一个批处理文件,它为我提供了有关 COM 端口的信息。所以我 运行 批处理文件并将输出存储在一个名为 "result" 的字符串中。出于验证目的,我使用 "MessageBox.Show(result)" 显示输出。下一步是我想使用标签在 windows 表单中仅显示 "result" 的特定行。
//label1.text = 结果的第 9 行//我正在寻找这样的东西
我该怎么做?我的做法对吗?
附上代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Programming();
}
private void Programming()
{
var processInfo = new ProcessStartInfo(@"C:\Users\vaka\Desktop\COM_Port_Detection.bat");
processInfo.CreateNoWindow = true;
processInfo.UseShellExecute = false;
//processInfo.RedirectStandardError = true;
processInfo.RedirectStandardOutput = true;
using (Process process = Process.Start(processInfo))
{
//
// Read in all the text from the process with the StreamReader.
//
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
MessageBox.Show(result);
}
}
}
}
你必须"parse"你从其他进程中读取的内容来提取所需的information/line。
一个简单的实现可能如下所示:
string result = reader.ReadToEnd();
string[] lines = result.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
if (lines.Length >= 9)
{
Console.WriteLine(lines[8]);
}
else
{
// handle error
}
你可以分别读取进程返回的每一行,然后只显示第9行:
using (StreamReader reader = process.StandardOutput)
{
var lines = new List<string>();
string line;
while ((line = reader.ReadLine()) != null)
lines.Add(line);
Console.Write(lines[8]);
MessageBox.Show(lines[8]);
}