vb.Net c#运行批处理文件并流式传输其输出

时间:2012-04-02 00:55:27

标签: c# vb.net batch-file

我在c#中的VB.NET中遇到这个问题,我有这个项目,我需要运行一个批处理文件,这很容易。但我的问题是我需要显示批处理文件,cmd窗口,文本框中显示的所有内容,现在,此代码打开文件没问题:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false
proc.StartInfo.FileName = "C:\\Users\\jwoow\\Desktop\\Server\\run.bat";
proc.Start().ToString();

但它不会将代码移动到文本框,此代码会传输最后显示的行,但不会传输批处理文件的整个内容,它也会关闭cmd窗口,我需要它保持打开状态:

Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "C:\\Users/jwoow/Desktop/Server/run.bat";
//this line hides cmd window
//p.StartInfo.CreateNoWindow = true;
p.Start();
StreamReader output = p.StandardOutput;
while (output.EndOfStream == false)
{
    string line = output.ReadLine();
    this.RunResults.Text = line;
}

是的,批处理文件用于服务器,它显示用户的amt(更新2分钟)并显示用户采取的不同事件。所以它不断更新。

2 个答案:

答案 0 :(得分:0)

使用“暂停”命令在执行后保持窗口打开。对于您正在使用的每个程序,输出到屏幕的文本将不同。大多数程序允许您根据提供的参数显示不同的输出。

答案 1 :(得分:0)

将它放在一个类中并调用代码。让最后一步有一个定时器,它会暂停两分钟,然后在2分钟延迟结束时循环回到开头。