在c#程序中,有时会用到调用cmd命令完成一些功能,于是在网上查到了如下方法,实现了 c#执行DOS命令,并返回结果。
- //dosCommand Dos命令语句
- publicstring Execute(string dosCommand)
- {
- return Execute(dosCommand, 10);
- }
- /// <summary>
- /// 执行DOS命令,返回DOS命令的输出
- /// </summary>
- /// <param name="dosCommand">dos命令</param>
- /// <param name="milliseconds">等待命令执行的时间(单位:毫秒),
- /// 如果设定为0,则无限等待</param>
- /// <returns>返回DOS命令的输出</returns>
- publicstaticstring 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;
- }
其实还有一种我认为非常好的办法,调用VB的Shell函数,非常简单。
引入 Microsoft.VisualBasic 开头的几个reference,然后调用下面的代码:
Microsoft.VisualBasic.Interaction.Shell(path);
这样就可以了