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 명령어를 실행하고 실행 결과 값을 메세지 박스로 출력해보았습니다.
도스 명령어의 출력 값을 메세지로 잘 뿌려주네요.
ProcessStartInfo 클래스의 Arguments를 사용하여 CMD.exe 프로세스에 "/c dir" 매개변수를 전달했습니다.
command 명령어를 정상적으로 실행시키려면 매개변수로 "/c dir" 지정해줘야 하는 것 같습니다.
"/c dir"의 정체는 뭘까요..? 🤔
우선은 의미를 모른 체 써보았습니다.
내용은 모두 개인 공부 기록 용이기에 부족한 부분이나 내용상 오류가 있을 수도 있습니다.
참고용으로 보시기 바랍니다.
혹 잘못된 내용이 있을 시 댓글 남겨주시면 수정하도록 하겠습니다.