프로그래밍 언어/C#

[C#] 명령 프롬프트 실행

proApril 2022. 8. 26. 15:47

# CMD 창 켜서 실행

using System.Diagnostics;

Process.Start("cmd.exe", command);

 

# 다른방법 (백그라운드 실행)

using System.Diagnostics;

public void RunCmd(string Command)
        {
            ProcessStartInfo cmd = new ProcessStartInfo();
            Process process = new Process();
            cmd.FileName = @"cmd";
            cmd.WindowStyle = ProcessWindowStyle.Hidden;             // cmd창이 숨겨지도록 하기
            cmd.CreateNoWindow = true;                               // cmd창을 띄우지 안도록 하기

            cmd.UseShellExecute = false;
            cmd.RedirectStandardOutput = true;        // cmd창에서 데이터를 가져오기
            cmd.RedirectStandardInput = true;          // cmd창으로 데이터 보내기
            cmd.RedirectStandardError = true;          // cmd창에서 오류 내용 가져오기

            process.EnableRaisingEvents = false;
            process.StartInfo = cmd;
            process.Start();
            process.StandardInput.Write(@Command + Environment.NewLine);
            // 명령어를 보낼때는 꼭 마무리를 해줘야 한다. 그래서 마지막에 NewLine가 필요하다
            process.StandardInput.Close();

            string result = process.StandardOutput.ReadToEnd();
            StringBuilder sb = new StringBuilder();
            //sb.Append("[Result Info]" + DateTime.Now + "\r\n");
            sb.Append(result);
            sb.Append("\r\n");            
            //textBox1.Text = sb.ToString();
            process.WaitForExit();
            process.Close();
            string ret = sb.ToString();
            Console.WriteLine("Command : " + Command); // 커맨드 확인.
            // Console.WriteLine("Command :" + Command + "\n" + "Return :" + ret);

        }