%errorlevel% не работает в WindowsXP.
Насколько я знаю, при возникновении ошибки %errorlevel% устанавливает значение 1 или выше, а если ошибки нет, устанавливает 0.
Но, хоть ошибки и нет, %errorlevel% равен 1. И я поставил %errorlevel% 0, даже если есть ошибка %errorlevel% все равно 0.
Я думаю, что ОС не меняет %errorlevel% в XP.
В Win7 работает полностью.
@echo off
setlocal enabledelayedexpansion
call dir
echo errorlevel=%errorlevel%
REM expected errorlevel=0 but 1
call dor
echo errorlevel=%errorlevel%
REM expected errorlevel=1
set errorlevel=0
call dor
echo errorlevel=%errorlevel%
REM expected errorlevel=1 but 0
Но если errorlevel 1() выглядит сработавшим.