0
我有一個調用C#程序的批處理文件。這個C#程序調用SQL Server數據庫。 有時它無法連接到數據庫,並且異常處理程序打印堆棧跟蹤並退出c#程序。我想嘗試運行這個程序最多5次。 如果成功(5次嘗試之前),則轉到下一步(CheckStatus),然後出錯並退出。調用C#程序後的批處理文件錯誤處理
當我運行這個時,即使C#程序有錯誤,它也會將%ERRORLEVEL%打印爲零。
@ECHO OFF
SET Header=-----------------------------------------------------
SET Logfile=C:\LOG\log.txt
set %ERRORLEVEL% = 0
echo %header%
ECHO Running the batch file >> %Logfile%
if '%1' == '' goto usage
if '%2' == '' goto usage
if '%1' == '/?' goto usage
if '%1' == '-?' goto usage
if '%1' == '?' goto usage
if '%1' == '/help' goto usage
SET SQLServer=dbsql\production
SET SQLUser=user1
SET SQLPass=pwd1
SET SQLCommandMaster=osql -S%SQLServer% -n -U%SQLUser% -P%SQLPass% -b -i
GOTO %1%
:Start
Set count=0
:RunCSharpProgram
set /a count+=1
ECHO starting RunCSharpProgram count >> %Logfile%
timeout /t 10
SET RunningStep="RunCSharpProgram"
start "" "C:\CSharpProject\GetData\GetData\bin\Debug\GetData.exe"
ECHO %ERRORLEVEL% >> %Logfile%
IF %ERRORLEVEL% ==1 and count LEQ 5 (GOTO RunCSharpProgram)
IF %ERRORLEVEL% ==1 and count EQ 5 (GOTO error)
IF %ERRORLEVEL% ==0 (GOTO CheckStatus)
:CheckStatus
ECHO Check Status of tables >> %Logfile%
REM %SQLCOMMANDMASTER% /Q "EXEC TestDB.dbo.CheckStatus"
goto end
:usage
echo Usage: %0 'start step' 'end step'
goto end
:error
REM ---------------------------------------------------------------------
ECHO ERROR RUNNING BatchFileTest.BAT >> %Logfile%
:end
echo %header% >> %Logfile%
echo END >> %Logfile%
不確定這個批處理文件有什麼問題。 謝謝 MR
的可能的複製[我如何從一個Windows命令行應用程序退出代碼? ](https://stackoverflow.com/questions/334879/how-do-i-get-the-application-exit-code-from-a-windows-command-line) – Gusman
可能重複[如何指定在.NET中退出控制檯應用程序的代碼?](https://stackoverflow.com/questions/155610/how-do-i-specify-the-exit-code-of-a-console-ap網絡中的摺疊) – mjwills
這兩個都不回答我的問題,我試圖從批處理文件中調用.NET程序 – user2726975