개발 STUDY - 1일1글작성

Process - Command 명령어 실행하고 결과 출력하기 본문

C#

Process - Command 명령어 실행하고 결과 출력하기

DeFo 2020. 6. 2. 06:56
실행 환경
OS Windows 10 Pro    버전 1903(OS 빌드 18362.836)
Language C#
.NET .NET Framework 4
IDE Visual Studio Community 2017

 

 

Process 클래스는 프로세스에 대한 액세스를 제공하고 프로세스를 시작하고 중지할 수 있습니다.

  • 프로세스 실행 및 종료는 이전 포스팅을 확인해주세요.

2020/05/31 - [C#] - Process로 외부 프로세스 실행하기

2020/06/01 - [C#] - Process - 실행중인 프로세스 찾아서 종료하기


  • ProcessStartInfo 클래스의 WorkingDirectory 메서드는 프로세스의 작업 디렉터리를 가져오거나 설정합니다.
  • ProcessStartInfo의 UseShellExecute는 프로세스를 시작할 때 운영 체제 셸을 사용할지 여부를 설정합니다. 프로세스를 시작할 때 셸을 사용하려면 true, 실행 파일에서 직접 프로세스를 만들어야 하면 false 입니다.
  • UseShellExecute 속성을 false로 설정하면 입력, 출력 및 오류 스트림을 리디렉션 할 수 있습니다.
  • ProcessStartInfo의 RedirectStandardOutput은 프로세스(애플리케이션)의 텍스트 출력을 StandardOutput 스트림에 쓸지 여부를 설정합니다.
  • Process의 StandardOutput 은 프로세스(애플리케이션)의 텍스트 출력을 읽는 데 사용되는 스트림을 가져옵니다.
  • StandardOutput 속성은 StreamReader 클래스입니다. StreamReader의 ReadToEnd() 메서드는 연결된 스트림의 현재 위치부터 끝까지의 모든 문자를 읽습니다.

 

 

private void RunCommandAndRedirect()
{
    Process p = new Process();
    p.StartInfo.FileName = "CMD.exe";
    p.StartInfo.Arguments = "/c dir";
    p.StartInfo.WorkingDirectory = @"C:\\Users\\Administrator\\Pictures";

    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.Start();

    string output = p.StandardOutput.ReadToEnd();
    MessageBox.Show(output);
    p.Close();
}

 

Process를 이용하여 dir command 명령어를 실행하고 실행 결과 값을 메세지 박스로 출력해보았습니다.

도스 명령어의 출력 값을 메세지로 잘 뿌려주네요.

 

dir Redirect StandardOutput

 

 

ProcessStartInfo 클래스의 Arguments를 사용하여 CMD.exe 프로세스에 "/c dir" 매개변수를 전달했습니다.

command 명령어를 정상적으로 실행시키려면 매개변수로 "/c dir" 지정해줘야 하는 것 같습니다.

 

"/c dir"의 정체는 뭘까요..? 🤔

우선은 의미를 모른 체 써보았습니다.

 

 

 

내용은 모두 개인 공부 기록 용이기에 부족한 부분이나 내용상 오류가 있을 수도 있습니다.
참고용으로 보시기 바랍니다.
혹 잘못된 내용이 있을 시 댓글 남겨주시면 수정하도록 하겠습니다.

 

'C#' 카테고리의 다른 글

Process - 실행중인 프로세스 찾아서 종료하기  (0) 2020.06.01
Process로 외부 프로세스 실행하기  (0) 2020.05.31
DateTime 비교하기  (0) 2020.05.30
Comments