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 plication-in-net) – mjwills
両方とも私の質問に答えていない、私はバッチファイルから.NETプログラムを呼び出そうとしている。 – user2726975