我需要使用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;
}
}
答案 0 :(得分:1)
command
的值中包含空格。 /c
参数仅将下一个参数用作要执行的命令,因此它将忽略第一个空格之后的所有内容。假设命令中没有引号要执行,则用引号将其括起来即可解决该问题:
_cmdPrompt.Arguments = "/c \"" + command + "\"";