¿Cómo se suprime la expansión de variables de entorno en DOS y Windows CMD?

Este es un ejemplo simplificado con nombres de variables modificados de lo que quiero hacer. También por motivos de simplicidad, estoy mostrando la versión de la línea de comandos en lugar de la versión del archivo bat.

Estoy haciendo lo siguiente.

> echo %foo%

%foo%

Sin embargo, si foo es una variable de entorno válida, no obtengo el resultado deseado (%foo%) Debido a la expansión de la variable de entorno.

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

bar
%bar%

Ahora, tengo un truco que hacer (siguiendo el ejemplo), pero me preguntaba si hay una forma más limpia de generar un% Carácter o para suprimir la expansión de la variable de entorno.

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

%foo%

Además, si la solución requerida es diferente en un archivo bat (como%% más bien que% o%1% más bien que%1) Por favor hagamelo saber.

Mi caso de uso real está en un archivo bat conSETX para establecer variables de entorno global que dependan de otra variable de entorno para expandirse dentro de ellas, pero tengo curiosidad por saber cómo expandir en DOS o cmd.

Respuestas a la pregunta(2)

Su respuesta a la pregunta