A expansão de variáveis de ambiente atrasada NÃO é ativada por padrão. É possível habilitar ou desabilitar a expansão de ...

A expansão de variáveis de ambiente atrasada NÃO é ativada por padrão.  É
possível habilitar ou desabilitar a expansão de variáveis de ambiente atrasada
para uma determinada invocação do CMD.EXE com a opção /V:ON ou /V:OFF.
Para habilitar ou desabilitar as extensões atrasadas de todas as invocações
do CMD.EXE em uma máquina e/ou sessão de logon de usuário, configure um dos
valores REG_DWORD a seguir, ou ambos os valores, no Registro usando o
REGEDIT.EXE:

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\DelayedExpansion

        e/ou

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\DelayedExpansion

para 0x1 ou 0x0.  A configuração específica do usuário tem precedência
sobre a configuração do computador.  As opções da linha de comando têm
precedência sobre as configurações do Registro.

Em um arquivo em lotes, os argumentos ENABLEDELAYEDEXPANSION ou
DISABLEDELAYEDEXPANSION têm precedência sobre a opção /V:ON ou /V:OFF.
Consulte SETLOCAL /? para obter detalhes.

Se a expansão de variáveis de ambiente atrasada estiver habilitada, o caractere
de exclamação poderá ser usado para substituir o valor de uma variável
de ambiente no tempo de execução.