Windows: listar las variables de entorno (CMD, PowerShell)
Introducción
Para listar todas las variables de entorno en Windows, ejecuta set en el Símbolo del sistema (cmd) o Get-ChildItem Env: en PowerShell.
Para mostrar o comprobar una sola variable, ejecuta echo %NOMBRE% en el Símbolo del sistema o $env:NOMBRE en PowerShell.
Para ver las variables de usuario y del sistema que Windows guarda para los procesos nuevos, abre el diálogo Variables de entorno desde Propiedades del sistema (sysdm.cpl).
set, Get-ChildItem Env: y el diálogo Variables de entorno funcionan igual desde Windows XP, y siguen haciéndolo en Windows 11.
En este artículo, te mostraré cómo listar todas las variables de entorno en Windows, mostrar una sola, distinguir las variables de usuario de las del sistema y leer el PATH, tanto desde la línea de comandos como desde la GUI de Windows.
He comprobado cada comando con la documentación de Microsoft en octubre de 2026, para Windows PowerShell 5.1 y PowerShell 7.6.7.
- Referencia rápida
- Desde cmd
- Desde PowerShell
- Variables de usuario y del sistema
- Desde la interfaz gráfica de usuario (GUI) de Windows
- La variable PATH
- Por qué no aparece una variable nueva
Referencia rápida: Símbolo del sistema y PowerShell
| Tarea | Símbolo del sistema (cmd) | PowerShell |
|---|---|---|
| Listar todas | set | Get-ChildItem Env: |
| Nombres que empiezan por JAVA | set JAVA | Get-ChildItem Env:JAVA* |
| Mostrar una variable | echo %JAVA_HOME% | $env:JAVA_HOME |
| Mostrar el PATH | path | $env:Path -split ';' |
| Variables de usuario guardadas | reg query HKCU\Environment | [Environment]::GetEnvironmentVariables('User') |
| Variables del sistema guardadas | reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" | [Environment]::GetEnvironmentVariables('Machine') |
Cada proceso recibe su propia copia del entorno al arrancar: las variables del sistema (compartidas por todos los usuarios), tus variables de usuario y lo que haya añadido su proceso padre.
Por eso set y Get-ChildItem Env: muestran lo que ve la ventana actual, que puede ser distinto de lo que Windows tiene guardado.
En Windows, los nombres de las variables no distinguen entre mayúsculas y minúsculas: %PATH%, %Path% y $env:path se refieren a la misma variable.
Cómo listar todas las variables de entorno desde cmd
Abre una nueva ventana de comandos (Win+R, escribe cmd y pulsa enter) y escribe:
setLa salida del comando es una lista de todas las variables de entorno con sus valores separados por un signo igual (=).

Desde la versión 22H2 de Windows 11, Terminal Windows es la consola predeterminada, así que cmd se abre en una pestaña de Terminal Windows.
Los comandos son los mismos: dependen del shell (Símbolo del sistema o PowerShell), no de la ventana que lo aloja.
Cómo filtrar la salida de set
Si le pasas un nombre a set, solo lista las variables cuyo nombre empieza por él:
set JAVAPara buscar una palabra en cualquier parte de los nombres y los valores, pasa la salida a findstr con una tubería (|):
set | findstr /i "path"El comando muestra ahora únicamente las líneas que contienen la palabra path, como Path y PATHEXT.
Añade la opción /i: findstr distingue entre mayúsculas y minúsculas por defecto, y en una instalación estándar de Windows la variable se llama Path, así que findstr "PATH" se la saltaría.

Cómo mostrar (echo) o comprobar una sola variable de entorno en cmd
Para mostrar el valor de una sola variable, escribe su nombre entre signos de porcentaje:
echo %JAVA_HOME%El Símbolo del sistema sustituye %JAVA_HOME% por el valor de la variable antes de ejecutar echo.
Si la variable no está definida, el Símbolo del sistema deja el texto tal cual y muestra %JAVA_HOME%.
Para comprobar si una variable está definida, por ejemplo en un archivo por lotes (batch), usa if defined:
if defined JAVA_HOME (echo JAVA_HOME is set) else (echo JAVA_HOME is not set)Cómo listar todas las variables de entorno desde PowerShell
PowerShell es el shell de línea de comandos y lenguaje de scripting más moderno de Windows, y expone las variables de entorno como una unidad llamada Env:.
PowerShell 1.0 se publicó en noviembre de 2006 como descarga opcional para Windows XP, y Windows 7 fue el primer Windows de escritorio que lo incluyó.
A fecha de octubre de 2026, Windows 10 y Windows 11 traen Windows PowerShell 5.1, que se abre con powershell, y PowerShell 7, multiplataforma, se instala junto a él, con el comando pwsh.
Todos los comandos de esta sección funcionan en ambos.
PowerShell ofrece varias formas de listar todas las variables de entorno.
La más sencilla es usar el cmdlet Get-ChildItem.
Usando Get-ChildItem
Abre una nueva ventana de PowerShell (Win+R, escribe powershell y pulsa enter) y escribe:
Get-ChildItem Env:El comando muestra una lista de todos los nombres de variables de entorno y sus valores en formato de tabla.

La tabla recorta los valores largos, como el Path de la captura.
Para verlos completos, ordena la lista por nombre y dale formato de lista:
Get-ChildItem Env: | Sort-Object Name | Format-ListTambién puedes filtrar por nombre con un comodín, o por valor con Where-Object:
Get-ChildItem Env:*JAVA*
Get-ChildItem Env: | Where-Object Value -like '*Java*'Usando uno de los alias de Get-ChildItem
Escribir Get-ChildItem es un poco largo, por lo que PowerShell ofrece algunos alias para facilitar su uso.
Puedes usar cualquiera de los siguientes comandos para obtener el mismo resultado:
gci Env:dir Env:ls Env:(el aliaslssolo existe en Windows; PowerShell en Linux y macOS dejalspara el comando del sistema)
ls Env:El comando muestra lo mismo que el comando Get-ChildItem Env:.

La principal ventaja del enfoque de PowerShell es que puedes proporcionar muchas opciones al cmdlet para personalizar su salida según tus necesidades.
Cómo obtener una sola variable de entorno en PowerShell
Para mostrar el valor de una sola variable, antepón $env: a su nombre:
$env:JAVA_HOMELa sintaxis del Símbolo del sistema no funciona aquí: en PowerShell, echo %JAVA_HOME% muestra el texto %JAVA_HOME% tal cual.
Si la variable no existe, $env:JAVA_HOME no muestra nada; para comprobar si está definida, usa Test-Path, que devuelve True o False:
Test-Path Env:JAVA_HOMETambién puedes leer una variable a través de .NET, algo práctico en scripts:
[Environment]::GetEnvironmentVariable('JAVA_HOME')Cómo listar por separado las variables de entorno de usuario y del sistema
Windows guarda las variables que defines en dos sitios, y construye tu entorno al iniciar sesión a partir de ambos:
- Variables del sistema: se aplican a todos los usuarios, y solo los administradores pueden cambiarlas.
Windows las guarda en la clave del registro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. - Variables de usuario: se aplican solo a tu cuenta.
Windows las guarda en la clave del registro
HKEY_CURRENT_USER\Environment.
set y Get-ChildItem Env: muestran el resultado combinado, además de las variables que Windows define para cada sesión, como USERNAME y USERPROFILE, y cualquier cosa que hayas definido en la ventana actual.
Para listar cada grupo por separado, pásale un destino (target) a GetEnvironmentVariables en PowerShell:
[Environment]::GetEnvironmentVariables('User')
[Environment]::GetEnvironmentVariables('Machine')El destino puede ser Process (la sesión actual, el valor por defecto), User o Machine.
La salida no está ordenada; para ordenarla por nombre, enumérala primero:
[Environment]::GetEnvironmentVariables('User').GetEnumerator() | Sort-Object NameDesde el Símbolo del sistema, puedes leer las mismas claves del registro con reg query:
reg query HKCU\Environment
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"reg query muestra los valores tal como están guardados, así que en el Path del sistema aparecen entradas como %SystemRoot%\system32 sin expandir.
Cómo consultar las variables de entorno desde la interfaz gráfica de usuario (GUI) de Windows
Si no necesitas usar esta salida en un script, o simplemente prefieres la GUI de Windows, puedes comprobar las variables de entorno desde la ventana Propiedades del sistema.
En Windows 11 y Windows 10, lo más rápido es escribir variables de entorno en la búsqueda del menú Inicio y abrir Editar las variables de entorno del sistema.
La misma búsqueda también muestra Editar las variables de entorno de esta cuenta, que abre directamente el diálogo Variables de entorno, sin pedir permisos de administrador, para editar tus variables de usuario.
También puedes llegar desde Configuración > Sistema > Información (Acerca de en Windows 10) > Configuración avanzada del sistema.
El diálogo Ejecutar funciona en todas las versiones desde Windows XP: pulsa las teclas Win+R, escribe sysdm.cpl y pulsa enter.

A continuación, haz clic en la pestaña Opciones avanzadas (Advanced en la captura) y luego en el botón Variables de entorno (Environment Variables).

Se abrirá el diálogo Variables de entorno. La lista de arriba muestra las variables de usuario de tu cuenta, y la de abajo las variables del sistema. Necesitas permisos de administrador para cambiar las variables del sistema.

El diálogo muestra lo que Windows tiene guardado, no lo que ve una ventana de Símbolo del sistema o de PowerShell ya abierta: un valor que cambies aquí solo llega a los programas que inicies después.
Si editas variables de entorno a menudo, PowerToys, la colección gratuita de utilidades de Microsoft, incluye la utilidad Environment Variables, que lista las variables de usuario y del sistema, te permite editarlas y muestra los valores que se aplican, Path incluido.
Cómo ver la variable de entorno PATH
La variable PATH contiene la lista de directorios donde Windows busca los ejecutables, separados por punto y coma (;).
En el Símbolo del sistema, el comando path sin argumentos la muestra, precedida de PATH=:
pathEl valor es una única línea muy larga, difícil de leer. En PowerShell, divídelo para mostrar un directorio por línea:
$env:Path -split ';'El Path de una sesión combina el Path del sistema y tu Path de usuario.
Para ver cada uno por separado, léelos con su destino:
[Environment]::GetEnvironmentVariable('Path', 'Machine') -split ';'
[Environment]::GetEnvironmentVariable('Path', 'User') -split ';'¿Por qué no aparece una variable de entorno nueva?
Un proceso recibe su entorno al arrancar, así que una ventana que ya estaba abierta no ve los cambios posteriores.
set NOMBRE=valoren el Símbolo del sistema y$env:NOMBRE = 'valor'en PowerShell cambian solo la sesión actual, y el cambio desaparece al cerrar la ventana.- El diálogo Variables de entorno y el comando
setxguardan la variable en el registro, así que persiste, pero solo la ven los programas que inicies después. Abre una nueva ventana de Símbolo del sistema o de PowerShell; si la variable sigue sin aparecer, cierra y vuelve a abrir la aplicación de terminal o el editor desde el que abriste esa ventana.
Ten cuidado con setx PATH "%PATH%;C:\Tools", un comando que encontrarás en muchas guías: %PATH% se expande al Path del sistema y al de usuario combinados, setx lo escribe todo en tu Path de usuario, y además recorta cualquier valor de más de 1024 caracteres.
Para añadir un directorio al PATH de forma permanente, edita en su lugar el Path de usuario o el del sistema en el diálogo Variables de entorno.
Así es como añadí Maven al PATH en mi guía para instalar Apache Maven en Windows.
Conclusión
En este artículo, te he mostrado las posibles formas de listar todas las variables de entorno en Windows, algo que tarde o temprano necesitarás cuando estés desarrollando o administrando un sistema.
Desde la línea de comandos, set en el Símbolo del sistema y Get-ChildItem Env: en PowerShell listan todas las variables de la sesión actual, y echo %NOMBRE% o $env:NOMBRE muestran una sola.
[Environment]::GetEnvironmentVariables y reg query muestran las variables de usuario y del sistema que Windows tiene guardadas, y el clásico diálogo Variables de entorno muestra ambas en la GUI.
Los comandos principales, set y Get-ChildItem Env:, funcionan igual desde Windows XP, así que deberían funcionarte en cualquier versión que uses.
Espero que te resulte útil.
