关于在winform下调用cmd
背景:
有一个StartDialog,类似于启动VS2010的时候弹出的启动界面,不同的是我们现在做的只是在一个Form上增加一个背景,然后启动的时候在Program.cs中Delay 5秒再启动我们需要的界面,期间在后台运行一个Bat文件注册组件,但是这样做最不好的地方,无法在界面上显示当前进度,找了一些资料,先保存一下,五一回去的时候看看能不能改成功。
//dosCommand Dos命令语句 public string Execute(string dosCommand) { return Execute(dosCommand, 0); } /// <summary> /// 执行DOS命令,返回DOS命令的输出 /// </summary> /// <param name="dosCommand">dos命令</param> /// <param name="milliseconds">等待命令执行的时间(单位:毫秒), /// 如果设定为0,则无限等待</param> /// <returns>返回DOS命令的输出</returns> public static string Execute(string command, int seconds) { string output = ""; //输出字符串 if (command != null && !command.Equals("")) { Process process = new Process();//创建进程对象 ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "cmd.exe";//设定需要执行的命令 startInfo.Arguments = "/C " + command;//“/C”表示执行完命令后马上退出 startInfo.UseShellExecute = false;//不使用系统外壳程序启动 startInfo.RedirectStandardInput = false;//不重定向输入 startInfo.RedirectStandardOutput = true; //重定向输出 startInfo.CreateNoWindow = true;//不创建窗口 process.StartInfo = startInfo; try { if (process.Start())//开始进程 { if (seconds == 0) { process.WaitForExit();//这里无限等待进程结束 } else { process.WaitForExit(seconds); //等待进程结束,等待时间为指定的毫秒 } output = process.StandardOutput.ReadToEnd();//读取进程的输出 } } catch { } finally { if (process != null) process.Close(); } } return output; }
浙公网安备 33010602011771号