windows batch errorlevel with if -


in below script if errorlevel 0, going if condition "if errorlevel 1"

@echo off if exist servers.txt goto :continue echo servers.txt file missing exit  :continue     set instance=%username:~2% setlocal enabledelayedexpansion /f "delims=" %%i in (servers.txt) (   pushd \\%%i\d$\%instance%\hyperion\oracle_common 2>nul     if not errorlevel 1 (       echo %%i     echo **********************************     set oracle_home=!cd!     echo oracle_home !oracle_home!     d:     /d /r d:\%instance%\hyperion %%a in ("jdk160_*") cd %%a     set java_home=!cd!     echo java_home !java_home!     echo d:\%instance%\hyperion\oracle_common\oui\bin\setup.exe -jreloc !java_home! -silent -attachhome oracle_home=!oracle_home! oracle_home_name="remote_epm"     d:\%instance%\hyperion\oracle_common\oui\bin\setup.exe -jreloc !java_home! -silent -attachhome oracle_home=!oracle_home! oracle_home_name=remote_epm     echo error code is:%errorlevel%     if errorlevel 2 (         echo unable attach remote server %%i oracle_home inventory         pause         exit     )     cd d:\%instance%\hyperion\oracle_common\opatch     if errorlevel 1 (         echo failed locate opatch location d:\%instance%\hyperion\oracle_common\opatch         pause         exit     )     echo current: !cd!     opatch.bat lsinv | find "applied on"     d:\%instance%\hyperion\oracle_common\oui\bin\setup.exe -jreloc !java_home! -silent -detachhome oracle_home=!oracle_home! oracle_home_name="remote_epm"     if errorlevel 1 (         echo error: unable detach remote server %%i oracle_home inventory         pause         exit     )     popd     pause   ) else (     echo oracle_home not found: \\%%~i\d$\%instance%\hyperion\oracle_common   )   pause ) endlocal 

output is:

vmhodwbrep9.oracleoutsourcing.com ********************************** oracle_home y:\pwbre7\hyperion\oracle_common java_home d:\pwbre7\hyperion\jdk160_35 d:\pwbre7\hyperion\oracle_common\oui\bin\setup.exe -jreloc d:\pwbre7\hyperion\jdk160_35 -silent -attachhome oracle_home=y:\pwbre7\hyperion\oracle_common oracle_home_name="remote_ep m" error code is:0 unable attach remote server vmhodwbrep9.oracleoutsourcing.com oracle_home inventory press key continue . . . 

change

echo error code is:%errorlevel% if errorlevel 2 ( 

to

call echo error code is:%%errorlevel%% if errorlevel 2 ( 

or, preferably since have invoked delayedexpansion,

echo error code is:!errorlevel! if errorlevel 2 ( 

with current code, entirity from

if not errorlevel 1 (

to single ) before endlocal line 1 block statement.

within block statement (a parenthesised series of statements), entire block parsed , then executed. %var% within block replaced variable's value at time block parsed - before block executed - same thing applies for ... (block).

hence, since block starts

if not errorlevel 1 ( 

then %errorlevel% replaced value of errorlevel @ time if encountered, 0, echo replaced echo error code is:0

two common ways overcome 1) use setlocal enabledelayedexpansion , use !var! in place of %var% access changed value of var or 2) call subroutine perform further processing using changed values.

note therefore use of call echo %%var%% displays changed value of var. call echo %%errorlevel%% displays, sadly resets errorlevel.

note last statement

call echo %%errorlevel%%` displays, sadly resets errorlevel.

so errorlevel displayed correctly, reset 0 call.


Comments

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -