Si las extensiones de comando están habilitadas, SET cambia así: "Cuando se llama al comando SET solamente con un nombre ...

Si las extensiones de comando están habilitadas, SET cambia así:  "Cuando se llama al comando SET solamente con un nombre de variable, sin signo de igual ni valor, se mostrarán los valores de todas las variables cuyos prefijos coincidan con el nombre especificado como parámetro para el comando SET. Por ejemplo:      SET P  mostrará todas las variables que empiecen con la letra 'P'.  El comando SET establecerá ERRORLEVEL en 1 si no se encuentra el nombre de la variable en el entorno actual.  El comando SET no permitirá que un signo de igual sea parte de una variable.  Se han agregado dos modificadores nuevos al comando SET:      SET /A expression     SET /P variable=[promptString]  El modificador /A especifica que la cadena a la derecha del signo de igual es una expresión numérica que es evaluada. El evaluador de expresiones es bastante simple y es compatible con las siguientes operaciones, en orden de precedencia decreciente:      ()                  - agrupar     ! ~ -               - operadores unarios     * / %%              - operadores aritméticos     + -                 - operadores aritméticos     << >>               - desplazamiento lógico                        - bit a bit y     ^                   - bit a bit exclusivo o     |                   - bit a bit     = *= /= %%= += -=   - asignación       &= ^= |= <<= >>=     ,                   - separador de expresión  Si se usa cualquiera de los operadores lógicos o de módulo, será necesario escribir la cadena entre comillas. Cualquier cadena de la expresión que no sea numérica, se tratará como variable de entorno cuyo valor se convertirá a tipo numérico antes de usarse. Si se especifica una variable que no está definida en el entorno actual, se usará el valor cero. Esto permite hacer operaciones aritméticas con los valores de variables de entorno evitando el escribir todos estos signos %% para obtener sus valores. Si se ejecuta el comando SET /A desde la línea del comando fuera del script, entonces se mostrará el valor final de la expresión. El operador de asignación requiere un nombre de variable de entorno a la izquierda del operador de asignación. Los valores numéricos son números decimales, a no ser que lleven el prefijo 0x delante para los números hexadecimales, y 0 para los números octales. De esta manera 0x12 es lo mismo que 18, y lo mismo que 022. Nota: la notación octal puede ser confusa: 08 y 09 no son números válidos porque 8 y 9 no son dígitos octales válidos.