无法使用C#运行命令

时间:2019-06-17 19:14:58

标签: c# system.diagnostics processstartinfo

我需要使用C#在TXL命令下运行。基本上我只是运行命令并将输出存储在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 个答案:

答案 0 :(得分:1)

command的值中包含空格。 /c参数仅将下一个参数用作要执行的命令,因此它将忽略第一个空格之后的所有内容。假设命令中没有引号要执行,则用引号将其括起来即可解决该问题:

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