невозможно запустить команду с помощью C # - PullRequest
2 голосов
/ 17 июня 2019

Мне нужно запустить ниже команды TXL, используя C #.в основном я просто запускаю команду и сохраняю вывод в файле temp.grm.Если я запускаю эту команду в cmd, она работает нормально, что означает, что с командой нет ошибки.

Проблема заключается в том, что я пытаюсь запустить эту команду с помощью программы на C #, где она просто создает пустой файл temp.grm.Может кто-нибудь, пожалуйста, помогите мне с этим.Спасибо!

команда: txl -q C: \ Users \ karth \ Desktop \ TXL \ java.grm C: \ Users \ karth \ Desktop \ TXL \ Tools \ RemoveTxlComments \ grm.txl -s 1000> C: \ Users \ karth \ Desktop \ TXL \ Temp \ temp.grm

...
/* command =        command "txl -q C:\\Users\\karth\\Desktop\\TXL\\java.grm C:\\Users\\karth\\Desktop\\TXL\\Tools\\RemoveTxlComments\\grm.txl -s 1000 > C:\\Users\\karth\\Desktop\\TXL\\Temp\\temp.grm"    string*/

        public bool ExecuteCommand(string command)
        {
            try
            {
                _cmdPrompt.UseShellExecute = true;
                _cmdPrompt.WorkingDirectory = _system32;
                _cmdPrompt.FileName = _cmdPromptPath;
                _cmdPrompt.Verb = "runas";
                _cmdPrompt.Arguments = "/c " + command;
                _cmdPrompt.WindowStyle = ProcessWindowStyle.Hidden;

                Process.Start(_cmdPrompt);
                return true;
            }
            catch (Exception e)
            {
                _logger.LogMessage(e.Message + _newLine);
                return false;
            }
        }

1 Ответ

1 голос
/ 17 июня 2019

Значение command содержит пробелы.Аргумент /c будет использовать только следующий аргумент в качестве команды для выполнения, поэтому он будет игнорировать все после первого пробела.Предполагая, что в команде нет кавычек для выполнения, окружение кавычками должно исправить это:

_cmdPrompt.Arguments = "/c \"" + command + "\"";
...