CSkin博客

标题: 【系统操作篇】执行CMD命令 [打印本页]

作者: cskin    时间: 2014-8-1 21:41
标题: 【系统操作篇】执行CMD命令
[C#] 纯文本查看 复制代码
/// <summary>
/// 执行DOS命令,返回DOS命令的输出
/// </summary>
/// <param name="dosCommand">dos命令</param>
/// <param name="milliseconds">等待命令执行的时间(单位:毫秒),
/// 如果设定为0,则无限等待</param>
/// <returns>返回DOS命令的输出</returns>
private 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;
}


调用方法:
[C#] 纯文本查看 复制代码
Console.WriteLine(Execute("ipconfig", 10000));



作者: CSdmin    时间: 2014-11-27 13:22
不知道为什么,用这些接口执行Windows自带的命令的时候返回执行结果没问题,但是如果执行非Windows的命令,比如Android SDK的ADB和fastboot的时候不能返回执行结果。
作者: ck261310    时间: 2015-1-16 13:17
蠻好的東西
作者: topminds    时间: 2020-6-25 05:45
正好需要这方面的资料,不知道能不能用




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2