CMD 结果到 DropDownList

CMD result into a DropDownList

我正在尝试创建一个恢复数据库的安装程序,我想 return cmd 命令的结果 sqlcmd -L 进入下拉列表 select 单击按钮事件。

有没有什么方法可以在不将命令的输出发送到 file.txt 并随后读取每一行的情况下实现这一点?

private void button1_Click(object sender, EventArgs e)
{
    string command;
    command = "sqlcmd -L " ;

    try
    {
        System.Diagnostics.ProcessStartInfo procStartInfo =
        new System.Diagnostics.ProcessStartInfo("cmd", "/c " + command);

        procStartInfo.RedirectStandardOutput = true;
        procStartInfo.UseShellExecute = false;
        procStartInfo.CreateNoWindow = false;

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        proc.StartInfo = procStartInfo;
        proc.Start();

       //Get the result and populate the drop down
    }
    catch (Exception objException)
    {
        // Log the exception
    }
}

简而言之,您是在谈论进程间通信。有一大堆可用的机制,请看这里。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574%28v=vs.85%29.aspx

不确定这是否是您需要的,但是 Process class 有一个 StandardOutput 属性 允许您将数据转储到标准输出(通常是控制台)由进程。因此,在该过程完成后(为此使用 proc.WaitForExit()),您可以这样做:

string processOutput = proc.StandardOutput.ReadToEnd();

那么如果你需要对每一行单独处理,你可以这样做:

var lines = processOutput.Split(
    new[] {Environment.NewLine},
    StringSplitOptions.RemoveEmptyEntries);
foreach(var line in lines) { ... }