从系统命令

时间:2017-04-13 09:27:03

标签: c command-prompt system-calls errorlevel

我有一个C项目,在某些时候我会调用下面的系统命令:

ret_val = system("@ECHO OFF\nFC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt");

FC命令基本上比较了两个文件,并且应该返回错误级别。

如果我在命令提示符下调用此命令,我只需回显errorlevel变量即可查看错误。我在这里没问题。

我的问题是我希望在我的代码中的int变量中有这个错误级别。我不想让它在我的终端上看到,但同时我想要这个变量来分析我的比较结果。此ret_val变量始终为0,它不是我需要的功能。

如何在代码中获得errorlevel值?

1 个答案:

答案 0 :(得分:2)

system命令只执行字符串的第一行,因此它执行@echo off,它不会更改默认返回码,而且总是得到0。

当然,你可以

  • 将文本粘贴到.bat文件中并执行此.bat文件
  • 使用命令链:@echo off && FC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt

但在您的情况下,由于您只有一个命令可以调用,因此只需在没有@echo off

的情况下调用它
ret_val = system("FC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt")

system不需要关闭回声。只有批处理文件执行默认为详细。系统调用是静默的(它们不会打印已发出的命令)。