【问题标题】:unable to run the command using c#无法使用c#运行命令
【发布时间】:2019-06-17 19:14:58
【问题描述】:

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

【问题讨论】:

  • I) 可能存在权限问题。 ii) 请确保所有路径等拼写正确,即使是很小的差异也会导致失败。
  • 谢谢!,是的,命令是正确的,我通过从 Debug-Watch 获取值来验证它,并在命令提示符下手动运行它。有效。运行 C# 代码时,我得到了一个 Windows 权限对话框来授予运行我授予的命令的权限。在临时文件中获取输出没有运气

标签: c# system.diagnostics processstartinfo


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2017-01-19
    • 2016-05-28
    • 2019-09-21
    • 1970-01-01
    相关资源
    最近更新 更多