¿Comprobar si una variable de entorno está definida sin extensiones de comando y sin usar un archivo por lotes?

Necesito usar una línea de comandos cmd.exe (se está llamando a cmd.exe desde la herramienta de compilación gyp) para determinar si una variable de entorno está definida o no. ¿Cómo puedo hacer esto? Estoy bien asumiendo que el valor de la variable no contiene comillas simples o dobles, pero no puedo asumir que las extensiones de comando estén habilitadas.

He intentado lo siguiente, que funciona muy bien en un archivo .bat, pero falla cuando se escribe directamente en la línea de comando:

IF "%UNDEFINED%" == "" (echo yes)

Cuando esa línea exacta está en un archivo .bat y se ejecuta, veoyes como la salida. Cuando lo escribo en la línea de comando, la salida está vacía. Estoy probando esto en Windows XP SP3, aunque mi compañero de trabajo ve los mismos resultados en Windows 7. Este es el método sugerido porhttp://support.microsoft.com/kb/121170 yhttp://www.robvanderwoude.com/battech_defined.php. No quiero usarIF DEFINED UNDEFINED (echo yes) porque eso no funcionará si las extensiones de comando están deshabilitadas.

La respuesta más votada en la siguiente publicación me ha llevado a creer que este problema está relacionado con cómo el porcentaje de expansión se maneja de manera diferente en el "CmdLineParser" frente al "BatchLineParser", pero aún no me ha llevado a una solución:¿Cómo analiza el intérprete de comandos de Windows (CMD.EXE) los scripts?

Respuestas a la pregunta(5)

Su respuesta a la pregunta