从系统命令获取错误级别
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。只有批处理文件执行默认为详细。系统调用是静默的(它们不打印发出的命令)。
我有一个 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。只有批处理文件执行默认为详细。系统调用是静默的(它们不打印发出的命令)。