1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; namespace cmd_test { class Program { static void Main( string [] args) { new Program(); } private Process process; private ProcessStartInfo startInfo; public Program() { process = new Process(); startInfo = new ProcessStartInfo(); startInfo.FileName = "CMD.exe" ; startInfo.UseShellExecute = false ; startInfo.RedirectStandardInput = true ; startInfo.RedirectStandardOutput = true ; startInfo.RedirectStandardError = true ; process.EnableRaisingEvents = false ; process.StartInfo = startInfo; new Thread( new ThreadStart(cmd)).Start(); } String cmd_string; String ret; String err; public void cmd() { startInfo.WorkingDirectory = @"C:\" ; Console.Write(startInfo.WorkingDirectory+ ">" ); while ( true ) { cmd_string = Console.ReadLine(); if (cmd_string.Trim() == "exit" ) { break ; } if (cmd_type(cmd_string)) { try { process.Start(); process.StandardInput.Write(cmd_string + Environment.NewLine); process.StandardInput.Close(); ret = process.StandardOutput.ReadToEnd(); String ret_buf = ret.Substring(ret.IndexOf(cmd_string) + cmd_string.Length); Console.Write(ret_buf); } catch (Exception ex) { startInfo.WorkingDirectory = @"C:\" ; Console.WriteLine(ex.ToString()); } } } } public bool cmd_type(String msg) { if (msg.Length > 2 && msg[0].ToString() == "c" && msg[1].ToString() == "d" ) { startInfo.WorkingDirectory += msg.Replace( "cd " , "" ) + "\\" ; return false ; } if (msg.Length == 2 && msg[1] == ':' ) { msg = msg.ToUpper(); startInfo.WorkingDirectory = msg[0].ToString() + @":\" ; Console.Write( "\r\n" + startInfo.WorkingDirectory + ">" ); return false ; } return true ; } } } |
결과를 리디렉션 하려면 아래와 같이 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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( @"명령어를 넣으면 된다" + 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(); |
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5