private void RunCommand() { if (Command.Trim() != String.Empty) { ProcessCommand com = RunProcess.GetCommandAndArguments(Command); if (com.IsWrong()) { lblCmdMessage.Text = "Ошибка в команде " + Command; } else { if (RunProcess.OpenProcess("\"" + com.Command + "\"", com.Arguments, false)) { lblCmdMessage.Text = "Команда " + Command + " выполнена"; } else { lblCmdMessage.Text = "Команда " + Command + " не выполнена"; } } } else { lblCmdMessage.Text = ""; } }
public static ProcessCommand GetCommandAndArguments(string ca) { ProcessCommand ret = new ProcessCommand(); ca = ca.Trim(); if (ca.StartsWith("\"")) //если строка стартовала с кавычки - ищем вторую, посреди команда { //вытащили команду int endc = ca.LastIndexOf('"'); if (endc == 0) { return(ret); } ret.Command = ca.Substring(1, endc - 1); //и параметры ret.Arguments = ca.Substring(endc + 1, ca.Length - endc - 1).Trim(); } else //иначе ищем первый пробел { int endc = ca.IndexOf(' '); if (endc == -1) //команда без аргументов { ret.Command = ca; ret.Arguments = string.Empty; } else //с аргументами { ret.Command = ca.Substring(0, ca.Length - endc + 1); ret.Arguments = ca.Substring(endc + 1, ca.Length - endc - 1); } } return(ret); }