Las variables de entorno son pequeñas etiquetas con un valor que Windows y los programas consultan para saber dónde están las cosas. Esta guía es para quien instala herramientas de línea de comandos (Python, Git, Node, ffmpeg…) y se encuentra con el típico «no se reconoce como un comando interno o externo».
En resumen
- Una variable de entorno es un nombre con un valor, por ejemplo
TEMP= carpeta temporal.- El PATH es la lista de carpetas donde Windows busca los ejecutables que escribes en la consola.
- Hay variables de usuario (solo tu cuenta) y del sistema (todas las cuentas, requieren administrador).
- Para editar el PATH usa la ventana gráfica o PowerShell; evita
setx PATH, que puede recortarlo.- Los cambios solo se ven en las ventanas y programas que abras después de guardarlos.
Qué es una variable de entorno
Piensa en ellas como atajos con nombre. En lugar de que cada programa tenga escrita la ruta de tu carpeta de usuario, pregunta por USERPROFILE y Windows le responde con C:\Users\Ana.
Algunas que ya existen en cualquier equipo:
| Variable | Valor típico | Para qué sirve |
|---|---|---|
USERPROFILE | C:\Users\Ana | Carpeta personal del usuario |
APPDATA | C:\Users\Ana\AppData\Roaming | Configuración de programas |
TEMP / TMP | C:\Users\Ana\AppData\Local\Temp | Archivos temporales |
SystemRoot | C:\Windows | Carpeta de Windows |
COMPUTERNAME | PC-SALON | Nombre del equipo |
PATH | Lista de carpetas | Dónde buscar ejecutables |
Puedes usarlas en el Explorador o en Ejecutar (Windows + R). Escribe %TEMP% y se abrirá la carpeta temporal.
El PATH, explicado con un ejemplo
Cuando escribes python en la consola, Windows no busca en todo el disco. Mira primero en la carpeta actual y después recorre, en orden, cada carpeta del PATH hasta encontrar python.exe (o .cmd, .bat…).

Si el PATH contiene esto:
C:\Windows\system32
C:\Windows
C:\Program Files\Git\cmd
C:\Users\Ana\AppData\Local\Programs\Python\Python313
al escribir git encuentra C:\Program Files\Git\cmd\git.exe en la tercera posición. Si la carpeta de Python no estuviera en la lista, python daría error aunque esté instalado.
Dos consecuencias prácticas:
- El orden importa. Si tienes dos versiones de Python en el PATH, gana la que aparece primero.
- El PATH final es la suma de dos. Windows coloca primero el PATH del sistema y a continuación añade el del usuario.
Para ver qué ejecutable se usa realmente:
where python
En PowerShell, el equivalente es:
Get-Command python | Select-Object Source
Variables de usuario frente a variables del sistema

| De usuario | Del sistema | |
|---|---|---|
| Afectan a | Solo tu cuenta | Todas las cuentas del equipo |
| Permisos | Los tuyos | Administrador |
| Dónde se guardan | HKEY_CURRENT_USER\Environment | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment |
| Cuándo usarlas | Herramientas que solo usas tú | Software compartido o servicios |
Regla sencilla: si dudas, usa la de usuario. Es más difícil romper algo y no necesitas permisos elevados.
Método 1: editar con la ventana gráfica
Es el método más seguro, sobre todo para el PATH, porque cada carpeta aparece en una fila separada.
- Pulsa Inicio y escribe
variables de entorno. - Elige Editar las variables de entorno del sistema. Se abre Propiedades del sistema, pestaña Opciones avanzadas.
- Pulsa Variables de entorno…
- Arriba verás las variables de usuario; abajo, las del sistema.
- Selecciona
Pathen la zona que quieras y pulsa Editar… - Pulsa Nuevo, pega la ruta de la carpeta (no la del
.exe) y usa Subir o Bajar para colocarla. - Acepta en todas las ventanas.
Si solo quieres editar las de tu usuario, también puedes abrir directamente esa ventana desde Ejecutar (Windows + R):
rundll32 sysdm.cpl,EditEnvironmentVariables
Método 2: setx desde la consola
setx guarda variables de forma permanente desde el Símbolo del sistema. Por defecto escribe en las de usuario; con /m lo hace en las del sistema (abre la consola como administrador).
setx JAVA_HOME "C:\Program Files\Java\jdk-21"
setx JAVA_HOME "C:\Program Files\Java\jdk-21" /m
Según la documentación de Microsoft, setx tiene dos comportamientos que conviene conocer:
- El valor nuevo solo aparece en ventanas que abras después, no en la actual.
- Hay un límite de 1024 caracteres. Si lo superas, el texto se recorta y eso es lo que se guarda.
Por qué no usar setx con el PATH
Es el error más repetido en tutoriales:
:: NO lo hagas
setx PATH "%PATH%;C:\herramientas"

%PATH% contiene el PATH del sistema y el del usuario ya combinados. Ese comando copia todo dentro del PATH de usuario, duplica entradas y, si la cadena supera 1024 caracteres, la recorta. Además expande las referencias como %JAVA_HOME%, que dejan de actualizarse solas.
Para crear variables sencillas, setx va bien. Para el PATH, usa la ventana gráfica o PowerShell.
Método 3: PowerShell
PowerShell distingue entre la sesión actual y los valores permanentes.
Ver o cambiar una variable solo en la ventana abierta (se pierde al cerrarla):
$env:PATH
$env:MI_VARIABLE = "hola"
Guardar una variable de forma permanente para tu usuario:
[Environment]::SetEnvironmentVariable("MI_VARIABLE", "hola", "User")
Con "Machine" en lugar de "User" se guarda en las del sistema (PowerShell como administrador).
Añadir una carpeta al PATH de usuario sin destrozarlo
$ruta = "C:\herramientas"
$actual = [Environment]::GetEnvironmentVariable("Path", "User")
if (($actual -split ";") -notcontains $ruta) {
[Environment]::SetEnvironmentVariable("Path", "$actual;$ruta", "User")
}
Este script lee solo el PATH de usuario, comprueba que la carpeta no esté ya y la añade al final. No toca el PATH del sistema.
Ejemplo práctico: ffmpeg portable
Has descomprimido ffmpeg en C:\herramientas\ffmpeg\bin y quieres usarlo desde cualquier carpeta.
- Abre la ventana de variables de entorno (método 1).
- En variables de usuario, edita
Pathy añadeC:\herramientas\ffmpeg\bin. - Cierra todas las consolas abiertas y abre una nueva.
- Comprueba:
where ffmpeg
ffmpeg -version
Si where devuelve la ruta correcta, ya está.
Errores habituales
- Añadir la ruta del archivo en lugar de la carpeta. El PATH contiene carpetas:
C:\herramientas\ffmpeg\bin, no...\bin\ffmpeg.exe. - No reiniciar la consola. Las ventanas abiertas conservan el entorno que tenían al arrancar. Lo mismo pasa con editores como VS Code: ciérralos del todo.
- Comillas dentro del PATH. En la ventana gráfica no hacen falta, aunque la ruta tenga espacios.
- Dos versiones del mismo programa. Usa
wherepara ver cuál gana y reordena las entradas. - Borrar el PATH del sistema por accidente. Antes de tocarlo, copia su valor a un archivo de texto. En PowerShell:
[Environment]::GetEnvironmentVariable("Path", "Machine") | Out-File "$env:USERPROFILE\Desktop\path-sistema.txt"
Preguntas frecuentes
¿Hace falta reiniciar Windows?
Normalmente no. Basta con cerrar y abrir los programas o consolas que deben ver el cambio. Algunos servicios del sistema sí necesitan reiniciarse para leer las variables del sistema nuevas.
¿Distingue mayúsculas y minúsculas?
No. Path, PATH y path son la misma variable en Windows.
¿Cómo veo todas las variables?
En el Símbolo del sistema, set sin argumentos. En PowerShell:
Get-ChildItem Env:



