2016-08-15 45 views
0

我試圖從批處理文件中的控制檯應用程序獲取返回值。控制檯應用程序保持返回0值,即使rtnValue在控制檯應用程序1從批處理文件中的控制檯應用程序獲取返回值

控制檯應用程序代碼

Public Function Main() As Integer 
Dim rtnValue as Int16 = 0 

    if Not Process Then rtnValue = 1 

    Return rtnValue 

End Function 

批處理文件

@ECHO OFF 

start /d "%~dp0" ConsoleApp.exe 

if "%ERRORLEVEL%" == "0" goto success 

:success 
echo Success with error code: %ERRORLEVEL% 
PAUSE 
goto end 

:error 
echo Failed with error code: %ERRORLEVEL% 
PAUSE 

:end 
+0

'START'命令不會返回執行命令的值(如果該命令不存在,它將返回9059)。您可以使用「START/WAIT」或完全消除START命令。在[這個答案] **表4 **中的進一步細節(http://stackoverflow.com/questions/34987885/what-are-the-errorlevel-values-set-by-internal-cmd-exe-commands/ 34987886#34987886) – Aacini

回答

1

不要使用start /d "%~dp0" ConsoleApp.exe是推出一個新殼運行它。而不是使用

cd %~dp0 
ConsoleApp.exe 

和然後測試退出代碼。

+0

開發該批處理文件。你是對的。 – Steve

+0

當我用cd%〜dp0 ConsoleApp.exe替換start/d「%〜dp0」ConsoleApp.exe時,它會得到「系統找不到指定的路徑」 成功出現錯誤代碼:1 – belltric

+0

這裏有幾個問題。我不知道爲什麼第一行還沒有完成。 「錯誤代碼成功」消息是因爲您需要執行'goto錯誤'而不是'goto success' – FloatingKiwi

相關問題