Se as extensões de comando estiverem ativadas, SET será alterado como a seguir: O comando SET chamado com apenas um nome ...

Se as extensões de comando estiverem ativadas, SET será alterado como a seguir:

O comando SET chamado com apenas um nome de variável, nenhum sinal de igual
ou valor exibirá o valor de todas as variáveis cujo prefixo corresponda ao nome
fornecido ao comando SET. Por exemplo:

    SET P

exibiria todas as variáveis começando com a letra 'P'

O comando SET definirá o ERRORLEVEL como 1 se o nome da variável não for
encontrado no ambiente atual.

O comando SET não permitirá que um sinal de igual seja parte do nome de
uma variável.

Duas novas opções foram adicionadas ao comando SET:

    SET /A expressão
    SET /P variável=[cadeia_do_prompt]

A opção /A especifica que a cadeia de caracteres à direita do sinal de igual
é uma expressão numérica que é avaliada. O avaliador da expressão
é muito simples e dá suporte às seguintes operações, em ordem
decrescente de precedência:

    ()                  - agrupamento
    ! ~ -               - operadores unários
    * / %%               - operadores aritméticos
    + -                 - operadores aritméticos
    << >>               - alternância lógica
                       - bit a bit E
    ^                   - bit a bit exclusivo OU
    |                   - bit a bit OU
    = *= /= %%= += -=    - atribuição
      &= ^= |= <<= >>=
    ,                   - separador de expressões

Se você usar qualquer um dos operadores lógicos ou de módulo, precisará
colocar a cadeia de caracteres da expressão entre aspas. Qualquer
cadeia de caracteres não numérica na expressão é tratada como nomes
de variável de ambiente cujos valores são convertidos para números antes
de serem usados. Se um nome de variável de ambiente for especificado,
mas não estiver definido no ambiente atual, será usado um valor de zero.
Isso permite fazer aritmética com valores de variáveis de ambiente, sem ter de
digitar todos esses sinais de %% para obter os valores. Se SET /A
for executado a partir da linha de comando fora de um script de comando,
ele exibirá o valor final da expressão. O operador de atribuição requer um
nome de variável de ambiente à sua esquerda. Os valores numéricos
são valores decimais, a menos que sejam antecedidos por 0x para números
hexadecimais e 0 para números octais. Portanto, 0x12 é o mesmo que 18
e o mesmo que 022. Observe que a notação octal pode causar confusão: 08 e 09
não são números válidos porque 8 e
9 não são dígitos octais válidos.