C 从系统命令获取errorlevel
我有一个C项目,在某个时候我调用下面的系统命令: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变量中包含此错误级别。我不希望它出现在我的终端上,但同时我需要这个变量来分析我的比较结果。这
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的系统上,它将执行这两个命令。