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) { ... }
我正在尝试创建一个恢复数据库的安装程序,我想 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) { ... }