C#.net从.bat文件的结果填充数据网格

时间:2010-07-30 16:38:34

标签: c# datagrid data-binding batch-file

我创建了一个.bat文件,显示Windows终端服务中记录的所有用户。 我可以在后面的c#代码中执行.bat文件,并在标签或文本框中以纯文本显示结果。我想做的是数据绑定数据网格中的用户名和会话ID。

  protected void Button1_Click(object sender, EventArgs e)
{
    System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(@"C:\listfiles.bat");
    psi.RedirectStandardOutput = true;
    psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    psi.UseShellExecute = false;
    System.Diagnostics.Process listFiles;
    listFiles = System.Diagnostics.Process.Start(psi);
    System.IO.StreamReader myOutput = listFiles.StandardOutput;
    listFiles.WaitForExit(2000);
     if (listFiles.HasExited)
       {
        string output = myOutput.ReadToEnd();
        // this.TextBox1.Text = output;
        }

  }

4 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

        string[] input = myOutput.ReadToEnd().Split('\n');

        DataTable table = new DataTable();

        table.Columns.Add(new DataColumn("UserName", typeof(string)));
        table.Columns.Add(new DataColumn("SessionId", typeof(string)));

        foreach (string item in input)
        {
            DataRow row = table.NewRow();
            row[0] = item.Split(',')[0];
            row[1] = item.Split(',')[1];
            table.Rows.Add(row);
        }

        myGridView.DataSource = table;

        // for WebForms:
        myGridView.DataBind();

当然你会想:

  • 做一些错误检查(我在样本中做了很多假设)
  • 确保用户名在会话ID之前
  • 还要确保您有一个DataGrid(myGridView)绑定到
  • 检查您的输出是否确实是换行符和逗号分隔
  • 如果没有,则更新代码中的字符
  • 另外......为了显示流程,我的效率降低了

答案 1 :(得分:1)

不是依赖于运行.bat文件,为什么不直接使用远程桌面服务API这样做呢?

http://msdn.microsoft.com/en-us/library/aa383459%28VS.85%29.aspx

或者也许使用Wmi:

http://gallery.technet.microsoft.com/ScriptCenter/en-us/f053de86-f053-474b-9b21-f2e6b161948f

答案 2 :(得分:0)

您可以在内存中创建DataTable,为username和sessionid添加列。 在循环中,基于分离字符(逗号?分号?)split()输出字符串,并根据该字符串向表中添加行。

然后将其设置为网格和数据绑定的数据源。

或者,您可以使用其他类型的集合。

答案 3 :(得分:0)

您可以创建一个xml结构,然后将数据网格绑定到该结构。