• C#操作cmd


    C#经常操作CMD,使用的话就用下面的2和3进行整理一下使用吧。

    1、简单的调用命令不需要回传数据,最简单

    public static void ipcmd(object p)
            {
                Process process = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = "/c " + p;
                startInfo.UseShellExecute = false;
                startInfo.RedirectStandardInput = false;
                startInfo.RedirectStandardOutput = true;
                startInfo.CreateNoWindow = true;
                process.StartInfo = startInfo;
                startInfo.Verb = "RunAs";
                process.Start();
            }

    2、有回传数据的

    public static string CmdExcute(string cmdStr)
            {
                Process process = new Process();
                string output = "";
    
                IntPtr ptr = new IntPtr();
                bool bOS_X64 = System.Environment.Is64BitOperatingSystem;
                if (bOS_X64)
                {
                    Win32.Wow64DisableWow64FsRedirection(ref ptr);        // 关闭system32文件重定向
                }
    
                try
                {
                    process.StartInfo.FileName = @"cmd.exe";
                    process.StartInfo.UseShellExecute = false;
                    process.StartInfo.RedirectStandardInput = true;
                    process.StartInfo.RedirectStandardOutput = true;
                    process.StartInfo.RedirectStandardError = true;
                    process.StartInfo.CreateNoWindow = true;
    
                    if (process.Start())//开始进程
                    {
                        process.StandardInput.AutoFlush = true;
                        process.StandardInput.WriteLine(cmdStr);
                        process.StandardInput.WriteLine("exit");
                        output = process.StandardOutput.ReadToEnd();
                    }
                }
                catch (Exception e)
                {
                }
                finally
                {
                    if (process != null)
                    {
                        process.Close();
                    }
                }
                if (bOS_X64)
                {
                    Win32.Wow64RevertWow64FsRedirection(ptr);               //恢复文件重定向
                }
                return output;
            }
        }

    3、截取输出流的

    public static List<string> cmd(string p)
            {
                List<string> lines = new List<string>();
                List<string> lineNet = new List<string>();
                Process process = new Process();
                ProcessStartInfo startInfo = new ProcessStartInfo();
                startInfo.FileName = "cmd.exe";
                startInfo.Arguments = "/c " + p;
                startInfo.UseShellExecute = false;
                startInfo.RedirectStandardInput = false;
                startInfo.RedirectStandardOutput = true;
                startInfo.CreateNoWindow = true;
                process.StartInfo = startInfo;
                startInfo.Verb = "RunAs";
    
                try
                {
                    process.Start();
                    System.IO.StreamReader reader = process.StandardOutput;//截取输出流                
    
                    while (!reader.EndOfStream)
                    {
                        //if (reader.ReadLine().ToString().Contains("已禁用") || reader.ReadLine().ToString().Contains("已启用") || reader.ReadLine().ToString().Contains("Enabled") || reader.ReadLine().ToString().Contains("Disabled"))
                        //{
                            lineNet.Add(reader.ReadLine());
                        //}
                    }
                    foreach (var item in lineNet)
                    {
                        if (item.Contains("已禁用") || item.Contains("已启用") || item.Contains("Disabled") || item.Contains("Enabled"))
                        {
                            lines.Add(item);
                        }
                    }
                }
                catch (Exception e)
                {
    
                }
                finally
                {
                    if (process != null)
                    {
                        process.Close();
                    }
                }
                return lines;
            }
  • 相关阅读:
    加密文件夹 | 彻底隐藏文件夹
    Swing的概述
    Java SE练习题——求奇数
    多线程有什么用?
    Robot的使用
    基础的Servlet
    Angular Resolver 学习
    GoLang 学习
    Angular Material 控件学习
    Angular 学习小记
  • 原文地址:https://www.cnblogs.com/javier520/p/10671549.html
Copyright © 2020-2023  润新知