Você não mostrou o script inteiro. A única explicação possível de que estou ciente é que seu código está dentro de um bloco maior de código entre parênteses, possivelmente parte de um loop FOR ou uma condição IF.
% ERRORLEVEL% é expandido quando a linha é analisada e todo o bloco entre parênteses é analisado ao mesmo tempo. Portanto, o ERRORLEVEL que você está vendo deve ter existido antes do início da parantesia mais externa.
Você deve usar a expansão atrasada se quiser ver um valor de mudança dentro de um bloco de código.
Aqui está uma demonstração simples:
@echo off
setlocal enableDelayedExpansion
set var=BEFORE
(
set var=AFTER
echo Normal expansion shows value before block started: %var%
echo Delayed expansion shows the current value: !var!
)
- OUTPUT -
Normal expansion shows value before block started: BEFORE
Delayed expansion shows the current value: AFTER