別のexeが正常に実行されると、条件付きでバッチファイルからexeを条件付きで実行しようとしています。
IFとERRORLEVELのいくつかの異なる組み合わせを試しましたが、どれも機能していないようです
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008r2
IF %ERRORLEVEL% 1(
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008
)
Pause
エラーを教えて
1(この時点では予想外でした。
私はここでどこが間違っていますか?
IF ERRORLEVEL ...
はDOS時代からサポートされている特別な構文です。WinNTで%ERRORLEVEL%
変数のサポートが追加されました。
元の構文は次のように使用されます。
call someapp.exe
if errorlevel 1 goto handleerror1orhigher
echo succuess...
変数を使用するには、通常のIF構文を使用します。if %errorlevel%==0 echo success...
誰かが%errorlevel%
を実行するとset errorlevel=foo
は動作を停止し、内部のcmd.exeコマンドで更新されない可能性があることに注意してください。
別の解決策は、&&
を使用することです。
call someapp.exe && (echo success) || (echo error!)
エラーレベルが壊れている(少なくとも)2つの既知のケースがあり、代わりに||
を使用する必要があります。
負のエラーレベルは問題を引き起こす可能性があります。次のようなものを試してください:
IF '%ERRORLEVEL%'=='0' GOTO OK