从系统命令获取错误级别

Getting errorlevel from system command

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

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

FC 命令主要比较两个文件,并且应该 return 一个错误级别。

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

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

如何在我的代码中获取 errorlevel 值?

system 命令只执行字符串的第一行,所以它执行 @echo off,这不会改变默认的 return 代码,你总是得到 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 不需要关闭 echo。只有批处理文件执行默认为详细。系统调用是静默的(它们不打印发出的命令)。