捕获bat文件中.net EXE的返回值

时间:2011-12-14 14:47:30

标签: .net batch-file exe

我目前正在运行一个EXE应用程序,该应用程序是从一个带有其他exes的bat文件调用的。我想要做的是我想从EXE返回一个值并将其传递给bat文件中的另一个EXE。我修改了我的控制台中的Main以返回类型为整数,但无法访问Bat文件中的值,除了ERRORLEVEL,我不想这样做,因为它可能会删除任何潜在的错误。如果我使用ERRORLEVEL来捕获返回值,例如发生错误并返回错误整数,我如何区分iam返回的整数值和此值。请告诉我你的意见。

@echo off
set PATH=%PATH%;C:\Scripts
Bat File:
TestConsoleApplication.exe
ECHO %ERRORLEVEL% -- Want to capture here return value of EXE dont want to do it using ERRORLEVEL

2 个答案:

答案 0 :(得分:1)

Errorlevel将具有您运行的程序的返回值。您不能指定不保留程序的返回值。

如果您担心脚本中的其他错误,可以检查这些位置的错误级别,并将值存储在另一个变量中,或跳转到处理该错误的特定标签。

答案 1 :(得分:1)

如果您的EXE当前不使用stdout,那么您只需将结果写入stdout,父批处理过程就可以将其捕获。

例如,如果要输出EXE(myprog.exe)

var1=my first value
var2=23

然后这个简单的脚本可用于执行EXE并捕获和存储结果

for /f "delims=" %%a in ('myprog.exe') do set "%%a"

即使正在使用stdout,您也可以将结果添加到输出中,以便您可以解析批处理中所需的值。但是如果stdout不方便,有一种更简单的方法。

让您的EXE创建一个设置值的临时批处理文件。然后,您的批处理文件可以在EXE完成后调用临时批处理文件,然后删除临时批处理文件。