Como você suprime a expansão de variáveis ​​de ambiente no DOS e no Windows CMD?

Este é um exemplo simplificado com nomes de variáveis ​​modificados do que eu quero fazer. Também por simplicidade, estou mostrando a versão da linha de comando em vez da versão do arquivo bat.

Eu estou fazendo o seguinte.

> echo %foo%

%foo%

No entanto, se foo é uma variável de ambiente válida, não obtenho a saída desejada (%foo%) devido à expansão das variáveis ​​ambientais.

> set foo=bar
> echo %foo%
> echo %%foo%%

bar
%bar%

Agora, eu tenho um hack para fazer (seguindo o exemplo) isso, mas eu queria saber se existe uma maneira mais clara de produzir um% caractere ou para suprimir a expansão das variáveis ​​de ambiente.

> set foo=bar
> set percent=%
> echo %percent%foo%percent%

%foo%

Além disso, se a solução necessária é diferente em um arquivo bat (como%% ao invés de% ou%1% ao invés de%1) Por favor deixe-me saber.

Meu caso de uso real está em um arquivo bat comSETX para definir variáveis ​​de ambiente globais que dependem de outra variável de ambiente para ser expandida dentro delas, mas estou curioso para saber como expandir em DOS ou em cmd.

questionAnswers(2)

yourAnswerToTheQuestion