首页 > 解决方案 > 在批处理文件中获取 C 程序的返回值

问题描述

我将 ac 程序编译为 demo.exe,它将使用批处理文件或 python 脚本运行。C 程序将返回我需要在批处理文件或 python 脚本中捕获的错误代码。

下面是一个 C 语言在 windows 上的示例程序

#include <stdio.h>
#include <stdlib.h>

int func()
{
    return(44);
}

void fun(void)
{
        func();
}


int main(int argc, char *argv[])
{
    int c = atexit(fun);
        printf("c = %dn", c);

    return(74);
}

接下来我编写了一个 Windows 批处理文件来运行该程序:我尝试了 3 个脚本来运行该 exe,但我没有从 C 程序中获得返回值。而是返回 exe 名称。这是批处理文件:

@ECHO OFF

ECHO ==================================== FIRST BATCH TEST SCRIPT ====================================

call demo.exe
echo %ERRORLEVEL%
echo demo.exe returns "%ERRORLEVEL%"
IF %ERRORLEVEL% NEQ 0 (
  echo FAILED
)

echo ==================================== SECOND BATCH TEST SCRIPT ====================================

for /f %%a in ('demo.exe') do set "demo=%%a"
echo %ERRORLEVEL%

echo ==================================== THIRD BATCH TEST SCRIPT ====================================

cd %~dp0
call demo.exe

if "%ERRORLEVEL%" == "54" goto NO_ERROR

:NO_ERROR
echo No Error. Error code = %ERRORLEVEL%
PAUSE
goto end

:ERROR
echo ERROR. Error code = %ERRORLEVEL%
PAUSE
:end

输出如下:

C:\Users\USER4\Downloads>demo.bat
==================================== FIRST BATCH TEST SCRIPT ====================================
c = 0ndemo.exe
demo.exe returns "demo.exe"
FAILED
==================================== SECOND BATCH TEST SCRIPT ====================================
demo.exe
==================================== THIRD BATCH TEST SCRIPT ====================================
c = 0nNo Error. Error code = demo.exe
Press any key to continue . . .

ERRORLEVEL 总是以 exe 的名称出现。 如何获取批处理文件中C程序的返回值?

标签: cbatch-file

解决方案


推荐阅读