2016-08-15 5 views
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を使用しないでください返します0値を保ちます代わりに使用してください。

cd %~dp0 
ConsoleApp.exe 

終了コードをテストします。

+0

バッチファイルが正しくありません。あなたは正しいです。 – Steve

+0

cd%〜dp0 ConsoleApp.exeでstart/d "%〜dp0" ConsoleApp.exeを置き換えると、 "Sytemが指定されたパスを見つけることができません" 成功したエラーコード: – belltric

+0

そこにいくつかの問題があります。なぜ最初の行がまだ失敗しているのか分かりません。 "成功したエラーコード"メッセージは、 'goto success'ではなく' 'goto success''を実行する必要があるためです。 – FloatingKiwi

関連する問題