Los nombres de variables de entorno definidos por el usuario de Windows pueden contener cualquier carácter excepto =
.¿Qué sintaxis verificará si se define un nombre de variable que contenga espacios?
Se pueden incluir caracteres especiales escapándolos. Un método más simple es simplemente encerrar toda la expresión SET entre comillas. Por ejemplo:
set "A weird & "complex" variable=My value"
set A weird ^& "complex" variable=My value
Ambas expresiones anteriores dan el mismo resultado. El nombre de la variable es A weird & "complex" variable
y el valor es My value
El IF constructo definido se utiliza para probar si se define una variable. Las citas no funcionan para esta prueba, los caracteres especiales en el nombre (incluidas las comillas) se deben escapar.
set "A&B=value"
if defined A^&B echo This works
if defined "A&B" echo This does not work
La prueba anterior escapada funciona bien. La prueba entrecomillada no funciona
Pero, ¿cómo puedo comprobar si existe una variable que contenga espacios?
set "A B=value"
if defined A^ B echo this does not work!
Parece que lo anterior debería funcionar, pero no es así.
Estoy buscando una respuesta que NO implique expandir la variable usando% A B% o! A B!
El DE /! Retrasar! La solución no era obvia cuando necesitaba dormir. ¡Pensé en eso cuando me desperté, pero ya tienes una excelente respuesta publicada! :) – dbenham
Su análisis * escape2 * es muy interesante. Otra oportunidad para insertar un comentario en una declaración – dbenham