我有一个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
值?
答案 0 :(得分:2)
system
命令只执行字符串的第一行,因此它执行@echo off
,它不会更改默认返回码,而且总是得到0。
当然,你可以
@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
不需要关闭回声。只有批处理文件执行默认为详细。系统调用是静默的(它们不会打印已发出的命令)。