重定向时保留 CMD 输出格式
Preserve CMD output format when redirecting it
现在我有一个应用程序,用户可以在其中将一些参数传递给进程并在文本框 and/or 文本文件中获取输出。但是,输出的格式确实与这些进程通过命令提示符 运行 时的格式相同。它们只是逐行阅读并在没有适当段落和间距的情况下放入。有没有办法保留原始输出?下面两个相关函数:
//function called via a button to write to textbox
// userInput is the textbox's name
private void call_Process(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = selectedFilePath;
process.StartInfo.Arguments = string.Format("{0}", userInput.Text);
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
try
{
process.Start();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
processOutput.Text += line;
}
}
//function called via button to write to textfile
private void write_To_File(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.InitialDirectory = "c:\";
openfile.Filter = "All Files (*.*)|*.*";
openfile.FilterIndex = 1;
if (openfile.ShowDialog() == true)
{
TextWriter tw = new StreamWriter(openfile.FileName);
tw.WriteLine(processOutput.Text);
tw.Close();
}
}
在@aschipfl 的建议下:
processOutput
控件和
使用固定大小的字体
processOutput.Text += (line + Environment.NewLine);
现在我有一个应用程序,用户可以在其中将一些参数传递给进程并在文本框 and/or 文本文件中获取输出。但是,输出的格式确实与这些进程通过命令提示符 运行 时的格式相同。它们只是逐行阅读并在没有适当段落和间距的情况下放入。有没有办法保留原始输出?下面两个相关函数:
//function called via a button to write to textbox
// userInput is the textbox's name
private void call_Process(object sender, EventArgs e)
{
Process process = new Process();
process.StartInfo.FileName = selectedFilePath;
process.StartInfo.Arguments = string.Format("{0}", userInput.Text);
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
try
{
process.Start();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
while (!process.StandardOutput.EndOfStream)
{
string line = process.StandardOutput.ReadLine();
processOutput.Text += line;
}
}
//function called via button to write to textfile
private void write_To_File(object sender, EventArgs e)
{
OpenFileDialog openfile = new OpenFileDialog();
openfile.InitialDirectory = "c:\";
openfile.Filter = "All Files (*.*)|*.*";
openfile.FilterIndex = 1;
if (openfile.ShowDialog() == true)
{
TextWriter tw = new StreamWriter(openfile.FileName);
tw.WriteLine(processOutput.Text);
tw.Close();
}
}
在@aschipfl 的建议下:
processOutput
控件和
processOutput.Text += (line + Environment.NewLine);