2011-12-14 135 views
1

我目前正在运行一个EXE应用程序,该应用程序从bat文件与其他一些exes调用。 iam试图做的是我想从EXE中返回一个值并将其传递给bat文件中的其他EXE。我修改了我的控制台中的主要返回类型作为一个整数,但无法访问Bat文件中的值,除了在ERRORLEVEL,我不想做,因为它可能会消除任何潜在的错误。如果我使用ERRORLEVEL捕获返回值,例如发生错误并返回错误整数,我如何区分iam返回的整数值和此值。请让我知道你对此的意见。在bat文件中捕获.net EXE的返回值

@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 

回答

1

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

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

+0

我正在检查程序的每个级别,但是我的关注是否在我调用的当前exe文件中发生了错误。它将返回一个错误值,我不应该通过我如何处理这种情况。 – user1098028 2011-12-14 15:19:00

+0

errorlevel将会有你程序的返回码。如果您的exe文件中发生的错误不作为返回码使用,您将无法获取错误。 – JRL 2011-12-14 15:23:24

1

如果您的EXE当前没有使用标准输出,那么您可以简单地将结果写入标准输出,由父批处理捕获它。

例如,如果你的EXE(MYPROG.EXE)为输出

var1=my first value 
var2=23 

那么这个简单的脚本可以被用来执行EXE和捕获和存储结果

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

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

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