c - 在批处理文件中获取 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程序的返回值?
解决方案
推荐阅读
- php - 在 PHP 中将地图区域 HTML 转换为 PDF(这可能吗?)
- java - 如何将十六进制字符串转换为 ANSI(窗口 1252)并将 ANSI(窗口 1252)转换回 Java 中的十六进制字符串?
- html - 应用于页眉的样式不应用于打印视图
- python - 如何在 Pandas 中使用另一个数据框(与字符串列相关)添加新列
- python - 用以前的记录填充熊猫数据框中的缺失记录
- c++ - Visual Studio 中的可变参数模板扩展问题
- c++ - 具有多种不同类型的 C++ 调用函数
- python - 每次通过新日期时如何更新数据框
- ios - 是否有可能将子项目添加到当前项目?
- linux - 调用未安装的例程时,Shell 脚本不会失败