Значения переменных, присвоенные внутри условия/цикла, неверно читаются внутри условия/цикла —
читаются значения, присвоенные переменным до входа в
условие/цикл. В этом случае чтобы прочесть-таки присвоенные значения
переменных перед условием/циклом применяется команда
„SetLocal EnableDelayedExpansion”.
После этой команды сможем читать значения переменных выражением
„!<Перемн>!”
вместо обычного „%<Перемн>%” (т.е. вместо знака процента
применяется восклицательный знак).
Дополнительные сведения здесь:
Там искать строку „SetLocal EnableDelayedExpansion”.