C 从系统命令获取errorlevel

C 从系统命令获取errorlevel,c,command-prompt,system-calls,errorlevel,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变量中包含此错误级别。我不希望它出现在我的终端上,但同时我需要这个变量来分析我的比较结果。这

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

ret_val = system("@ECHO OFF\nFC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt");
FC命令基本上比较这两个文件,并假定返回一个错误级别

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

我的问题是,我希望在代码中的int变量中包含此错误级别。我不希望它出现在我的终端上,但同时我需要这个变量来分析我的比较结果。这个
ret\u val
变量始终为0,这不是我需要的功能


如何在代码中获取
errorlevel
值?

系统命令只执行字符串的第一行,因此它执行
@echo off
,这不会更改默认返回代码,并且您总是得到0

当然可以

  • 将文本粘贴到.bat文件中并执行此.bat文件
  • 使用命令链接:
    @echo off&&FC/A/L/N C:\\tmp\\test.out C:\\bin\\win\\output.txt
但是在您的情况下,因为您只有一个命令要调用,所以只需调用它,而不必关闭
@echo

ret_val = system("FC /A /L /N C:\\tmp\\test.out C:\\bin\\win\\output.txt")

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

抱歉,无法复制。根据参数,我得到0(无差异)、1(差异)和2(未找到文件)。求你了?是的,我得到的结果和你的一样。我的问题是如何在代码中获得这些值(0、1、2)?我不想通过回显errorlevel变量来查看它。
ret_val
为您提供了什么?
ret_val
为我提供了它。这就是为什么我说我不能复制你的问题。这就是为什么我要求一个能改变一切的。。。只执行
echo
命令:这就是为什么您得到0个returncode。您不需要使用
@echo off
命令。如果您想停止输出,只需使用
>nul2>NUL
重定向输出/错误,这不是您建议的解决方案!此外,在C语言中使用os.system不是很奇怪吗?oooops太多python:)抱歉,修复了输入错误!顺便说一句,这种行为(只执行第一行)只发生在Windows上。在类似linux的系统上,它将执行这两个命令。