Windows系统命令重定向

时间:2016-09-09 15:58:37

标签: c

我可以从命令行使重定向工作,但我无法从我的C代码中获得重定向。非常感谢任何建议!

//这样可行:-hashfile命令成功完成。

memset(&tchar[0], 0, sizeof(tchar));
sprintf(tchar, "certutil -hashfile \"\%s\"\ MD5", output_file);  
system(tchar);

这不是 - >错误:预计不超过2个args,收到4

sprintf(tchar, "certutil -hashfile \"\%s\"\ MD5 ^> "\C:\\TEMP\\image.cksm\"\"", output_file); 

1 个答案:

答案 0 :(得分:1)

sprintf&#39> 格式参数存在问题,无效:

  • 编译错误:来自 " \ C:\的dblquote(" 结束格式字符串,使其余部分(路径)非法。
  • 运行时错误:来自 ^ &gt; 的插入符号( ^ )生成以下重定向运算符(< em>&gt; )被视为文字(作为程序参数的结果;与以下文件名相同),因此 certutil 接收4个参数而不是(预期的) 2.如果你想将它们视为文字,你只需要逃避特殊的字符,并放弃它们的特殊含义。
  • 部分结束( C )转义:来自 \&#34; \ %的第2和第4个反斜杠( \ ) s \&#34; \ - 并不重要,但会过度复杂化字符串。

要使其正常工作,请将代码更改为:

sprintf(tchar, "certutil -hashfile \"%s\" MD5 > \"C:\\TEMP\\image.cksm\"", output_file);