12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- using System.Diagnostics;
- using System.IO;
- namespace LJLib.Cmd
- {
- public static class CMDHelper
- {
- public static string RunWithReturn(string cmd, string workingdir = null)
- {
- using (Process p = new Process())
- {
- if (!string.IsNullOrEmpty(workingdir) && Directory.Exists(workingdir))
- {
- p.StartInfo.WorkingDirectory = workingdir;
- }
- RunCmd(p, cmd);
- string line = p.StandardOutput.ReadLine();
- while (line != cmd)
- {
- line = p.StandardOutput.ReadLine();
- }
- string rslt = string.Empty;
- line = p.StandardOutput.ReadLine();
- while (line != "exit")
- {
- if (string.IsNullOrEmpty(rslt))
- {
- rslt = line;
- }
- else
- {
- rslt += "\r\n" + line;
- }
- line = p.StandardOutput.ReadLine();
- }
- string errmsg = p.StandardError.ReadToEnd().Trim();
- if (!string.IsNullOrEmpty(errmsg))
- {
- rslt += "\r\nERROR:\r\n" + errmsg;
- }
- return rslt;
- }
- }
- //public static string RunWithReturn(string cmd, Encoding encoding)
- //{
- // Process p = new Process();
- // RunCmd(p, cmd);
- // string rslt = "";
- // byte[] St = new byte[1024];
- // using (MemoryStream ms = new MemoryStream())
- // {
- // int cnt = 0;
- // while ((cnt = p.StandardOutput.BaseStream.Read(St, 0, St.Length)) > 0)
- // {
- // ms.Write(St, 0, cnt);
- // }
- // St = ms.ToArray();
- // }
- // string msg = Encoding.UTF8.GetString(St);
- // using (StreamReader reader = new StreamReader(p.StandardOutput.BaseStream, encoding))
- // using (StreamReader errReader = new StreamReader(p.StandardError.BaseStream, encoding))
- // {
- // rslt += reader.ReadToEnd() + "\r\n" + errReader.ReadToEnd();
- // }
- // return rslt;
- //}
- public static void Run(string cmd)
- {
- using (Process p = new Process())
- {
- RunCmd(p, cmd);
- }
- }
- private static void RunCmd(Process p, string cmd)
- {
- p.StartInfo.FileName = "cmd.exe";
- p.StartInfo.UseShellExecute = false;
- p.StartInfo.RedirectStandardInput = true;
- p.StartInfo.RedirectStandardOutput = true;
- p.StartInfo.RedirectStandardError = true;
- p.StartInfo.CreateNoWindow = true;
- p.Start();
- p.StandardInput.WriteLine("echo off");
- p.StandardInput.WriteLine(cmd);
- p.StandardInput.WriteLine("exit");
- }
- }
- }
|