从系统命令获取错误级别

问题描述 投票:0回答:2

我有一个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值?

c command-prompt system-calls errorlevel
2个回答
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不需要关闭回声。仅批处理文件执行默认为详细。系统调用处于静默状态(它们不打印发出的命令)。


0
投票

为什么我的fc命令返回-1,代表什么?

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.