首页 > 解决方案 > 无法使用c#运行命令

问题描述

我需要使用 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;
            }
        }

标签: c#system.diagnosticsprocessstartinfo

解决方案


的值中command有空格。该/c参数只会使用下一个参数作为要执行的命令,因此它将忽略第一个空格之后的所有内容。假设要执行的命令中没有引号,用引号括起来应该可以解决它:

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

推荐阅读