2016-08-15 93 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

相关问题