场景
Winform中执行cmd命令的工具类,比如调用某些exe,类似mysqldump.exe这样类似的命令。
新建工具类CmdHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace mysqldatabak { using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; namespace Helper { /// <summary> /// 执行命令 /// </summary> public class CmdHelper { /// /// 执行cmd.exe命令 /// ///命令文本 /// 命令输出文本 public static string ExeCommand(string commandText) { return ExeCommand(new string[] { commandText }); } /// /// 执行多条cmd.exe命令 /// ///命令文本数组 /// 命令输出文本 public static string ExeCommand(string[] commandTexts) { Process p = new Process(); 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; string strOutput = null; try { p.Start(); foreach (string item in commandTexts) { p.StandardInput.WriteLine(item); } p.StandardInput.WriteLine("exit"); strOutput = p.StandardOutput.ReadToEnd(); //strOutput = Encoding.UTF8.GetString(Encoding.Default.GetBytes(strOutput)); p.WaitForExit(); p.Close(); } catch (Exception e) { strOutput = e.Message; } return strOutput; } /// /// 启动外部Windows应用程序,隐藏程序界面 /// ///应用程序路径名称 /// true表示成功,false表示失败 public static bool StartApp(string appName) { return StartApp(appName, ProcessWindowStyle.Hidden); } /// /// 启动外部应用程序 /// ///应用程序路径名称 ///进程窗口模式 /// true表示成功,false表示失败 public static bool StartApp(string appName, ProcessWindowStyle style) { return StartApp(appName, null, style); } /// /// 启动外部应用程序,隐藏程序界面 /// ///应用程序路径名称 ///启动参数 /// true表示成功,false表示失败 public static bool StartApp(string appName, string arguments) { return StartApp(appName, arguments, ProcessWindowStyle.Hidden); } /// /// 启动外部应用程序 /// ///应用程序路径名称 ///启动参数 ///进程窗口模式 /// true表示成功,false表示失败 public static bool StartApp(string appName, string arguments, ProcessWindowStyle style) { bool blnRst = false; Process p = new Process(); p.StartInfo.FileName = appName;//exe,bat and so on p.StartInfo.WindowStyle = style; p.StartInfo.Arguments = arguments; try { p.Start(); p.WaitForExit(); p.Close(); blnRst = true; } catch { } return blnRst; } } } }
调用示例
string cmdStr = mysqlDumpPath + " -h " + this.host.Text.Trim() + " -u" + this.username.Text.Trim() + " -p" + this.password.Text.Trim() + " " + this.database.Text.Trim() + " " + tableName + " > " + """ + this.textBox_bak_path.Text.Trim() + "\" + tableName + ".sql""; CmdHelper.ExeCommand(cmdStr);