I am calling a .bat
file from Powershell
in a Microsoft Windows environment, and would like to know if the exit code was success or failure.
A problem seems to be occurring in this unusual, (although not very unusual), edge-case.
Example #1:
.\test1.bat
ECHO ON
setlocal enabledelayedexpansion
False
if !errorlevel! neq 0 exit /b !errorlevel!
echo "More text"
This works fine. False
causes an error; the next line checks the status, sees a 1
, and exit
s with code 1
. The calling powershell
has the correct result. echo $LASTEXITCODE
is 1
.
Example #2:
.\test2.bat
ECHO ON
setlocal enabledelayedexpansion
if "testing" == "testing" (
False
if !errorlevel! neq 0 exit /b !errorlevel!
echo "More text"
echo "More code"
True
if !errorlevel! neq 0 exit /b !errorlevel!
echo "More code"
)
Here is the difficulty. False
causes an error; the next line checks the status, sees a 1
, and exits with code 1
. Then, the calling powershell
has an unexpected result, echo $LASTEXITCODE
is 0
.
Could only the batch file be modified to fix the problem?