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; } } }
결과를 리디렉션 하려면 아래와 같이 사용한다.
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