2011-12-14 165 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完成後調用臨時批處理文件,然後刪除臨時批處理文件。