Variables de entorno y PATH permanentes

Mantenido el

¿Le ha pasado alguna vez que una variable definida en el Símbolo del sistema con set MY_VAR=Hello desapareció al cerrar la ventana?

Las variables definidas con el comando set son válidas solo durante la sesión actual y desaparecen al cerrar la ventana. Si desea conservar el valor incluso después de reiniciar, utilice el comando setx. Comprender correctamente la diferencia entre ambos es el primer paso para dominar las variables de entorno.

Qué son las variables de entorno

Las variables de entorno son un mecanismo que almacena, en pares de clave y valor, los valores de configuración a los que hacen referencia el sistema operativo y las aplicaciones.

Para mostrar todas las variables de entorno actuales, ejecute el siguiente comando.

set
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set
APPDATA=C:\Users\user\AppData\Roaming
COMPUTERNAME=DESKTOP-XXXX
PATH=C:\Windows\system32;C:\Windows;…
TEMP=C:\Users\user\AppData\Local\Temp
USERNAME=user
USERPROFILE=C:\Users\user
C:\users\user>

Para comprobar una variable específica, use echo.

echo %PATH%
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

Variables de entorno del sistema de uso frecuente

Nombre de la variableDescripciónEjemplo
%PATH%Rutas de búsqueda de archivos ejecutablesC:\Windows\System32;...
%TEMP% / %TMP%Ubicación de los archivos temporalesC:\Users\user\AppData\Local\Temp
%USERNAME%Nombre del usuario actualuser
%COMPUTERNAME%Nombre del equipoDESKTOP-XXXX
%USERPROFILE%Ruta de la carpeta del usuarioC:\Users\user
%APPDATA%Carpeta de datos de aplicacionesC:\Users\user\AppData\Roaming
%WINDIR%Carpeta de WindowsC:\Windows
%SYSTEMROOT%Carpeta del sistema de WindowsC:\Windows

Comando set (solo para la sesión)

El comando set crea o modifica variables que son válidas únicamente dentro de la sesión actual del Símbolo del sistema.

set nombre_de_variable=valor
set MY_APP_HOME=C:\Apps\MyApp
echo %MY_APP_HOME%
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set MY_APP_HOME=C:\Apps\MyApp
C:\Users\user>
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %MY_APP_HOME%
C:\Apps\MyApp
C:\users\user>

Para eliminar una variable, deje el valor vacío.

set MY_APP_HOME=
No deje espacios antes ni después del =

Si escribe set MY_VAR = Hello, el nombre de la variable será MY_VAR (con un espacio al final) y el valor será Hello (con un espacio al principio). Como ya no se podrá hacer referencia a ella con %MY_VAR%, escriba set MY_VAR=Hello, sin espacios antes ni después de =. Encerrar el valor entre comillas, como en set "MY_VAR=Hello", evita que se incorporen al valor espacios sobrantes al final de la línea, por lo que es la forma recomendada en archivos por lotes.

Para realizar cálculos numéricos se usa set /a.

set /a RESULT=10 + 5
echo %RESULT%
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set /a RESULT=10 + 5
15
C:\users\user>
Tenga en cuenta que solo es válido durante la sesión

Las variables definidas con set desaparecen al cerrar la ventana del Símbolo del sistema. Incluso si se usa set dentro de un archivo por lotes, la variable desaparece cuando termina la ejecución de ese archivo (si se usa setlocal, desaparece al llegar a endlocal).

Comando setx (configuración permanente)

El comando setx escribe el valor en el Registro de Windows, por lo que el valor se conserva incluso después de cerrar el terminal o reiniciar el equipo.

setx nombre_de_variable "valor"
La sintaxis de setx es distinta a la de set

En set se usa nombre_de_variable=valor (el = es necesario), pero en setx se usa nombre_de_variable "valor" (no se necesita =, se separa con un espacio). Esta diferencia es fácil de confundir, así que tenga cuidado.

Establecer como variable de entorno de usuario (predeterminado)

setx MY_APP_HOME "C:\Apps\MyApp"
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx MY_APP_HOME "C:\Apps\MyApp"
CORRECTO: se guardó el valor especificado.
C:\users\user>

Establecer como variable de entorno del sistema (opción /M)

Al agregar la opción /M, se establece como variable de entorno del sistema, que afecta a todos los usuarios.

setx MY_APP_HOME "C:\Apps\MyApp" /M
- □ ×
Ícono de la consola de comandos
Administrador: Administrador: Símbolo del sistema
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx MY_APP_HOME "C:\Apps\MyApp" /M
CORRECTO: se guardó el valor especificado.
C:\users\user>
La opción /M requiere permisos de administrador

Para establecer variables de entorno del sistema agregando la opción /M a setx, es necesario ejecutarlo como administrador. Si no se tienen los permisos, se produce un error.

setx no se refleja en la sesión actual

Una advertencia importante: las variables definidas con setx no se reflejan en la ventana actual del Símbolo del sistema. Solo son válidas a partir de que se abre una ventana nueva.

setx NEW_VAR "Hello"
echo %NEW_VAR%
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx NEW_VAR "Hello"
CORRECTO: se guardó el valor especificado.
C:\users\user>
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %NEW_VAR%
%NEW_VAR%
C:\users\user>

Se muestra %NEW_VAR% tal cual porque la variable no está definida en la sesión actual. Al abrir una ventana nueva, se mostrará correctamente Hello.

Comparación entre set y setx

Elementosetsetx
AlcanceSolo la sesión actualPermanente (válida incluso después de reiniciar)
Sintaxisset VAR=valorsetx VAR "valor"
Reflejo en la sesión actualInmediatoNo se refleja (válida en una ventana nueva)
Configuración a nivel del sistemaNo es posiblePosible con la opción /M
Permisos de administradorNo se necesitanNo se necesitan para variables de usuario; sí para variables del sistema
Uso temporal dentro de archivos por lotesAdecuadoNo recomendable (se escribe en cada ejecución)

Agregar elementos a PATH

PATH es una variable de entorno especial que enumera los directorios en los que se buscan los archivos ejecutables.

Agregar a PATH temporalmente (solo para la sesión)

set PATH=%PATH%;C:\MyTools
- □ ×
Ícono de la consola de comandos
Consola de comandos
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set PATH=%PATH%;C:\MyTools
C:\Users\user>

Agregar a PATH de forma permanente (setx)

setx PATH "%PATH%;C:\MyTools"
setx PATH "%PATH%;..." también incorpora el PATH del sistema

%PATH% del Símbolo del sistema es el valor que combina el PATH del sistema y el PATH del usuario. Si se guarda esto como variable de entorno de usuario con setx PATH, el contenido del PATH del sistema se copia de forma duplicada en el PATH del usuario. Para modificar el valor de PATH, se recomienda el método con PowerShell que se muestra a continuación.

Atención al límite de 1024 caracteres al configurar PATH con setx

El comando setx limita la longitud de los valores que se pueden establecer a 1024 caracteres. Si el %PATH% actual es largo, al ejecutar setx PATH "%PATH%;nueva_ruta" el PATH se trunca a 1024 caracteres y existe el riesgo de perder rutas existentes. Antes de modificar PATH, compruebe su longitud con echo %PATH%.

Cómo agregar a PATH de forma segura (con PowerShell)

Si PATH es largo o desea agregar elementos de forma segura, el método más fiable es usar PowerShell. Como se lee solo el PATH del usuario y se le agrega la nueva ruta, se evitan tanto la duplicación del PATH del sistema como el truncamiento a 1024 caracteres.

rem Agregar al PATH del usuario (evita el límite de 1024 caracteres)
powershell -Command "[System.Environment]::SetEnvironmentVariable('PATH', [System.Environment]::GetEnvironmentVariable('PATH','User') + ';C:\MyTools', 'User')"
rem Agregar al PATH del sistema (requiere permisos de administrador)
powershell -Command "[System.Environment]::SetEnvironmentVariable('PATH', [System.Environment]::GetEnvironmentVariable('PATH','Machine') + ';C:\MyTools', 'Machine')"
Administrar PATH desde la interfaz gráfica es lo más seguro

Si modifica PATH con frecuencia, lo más seguro es usar la interfaz gráfica (Propiedades del sistema). Al presionar Win + R y escribir sysdm.cpl, se abre «Propiedades del sistema» y, desde el botón «Variables de entorno», se puede editar PATH de forma segura.

Ejemplo práctico en un archivo por lotes

Este es un ejemplo de un script de instalación que usa set y setx según corresponda.

@echo off
setlocal

rem Destino de instalación (se usa set para referencias temporales dentro del archivo por lotes)
set INSTALL_DIR=C:\MyApp

echo Iniciando la instalación...

rem ... procesamiento de instalación ...
mkdir "%INSTALL_DIR%\bin" 2>nul
copy "myapp.exe" "%INSTALL_DIR%\bin\" >nul

rem Agregar a PATH para poder usarlo de inmediato en la sesión actual
set PATH=%PATH%;%INSTALL_DIR%\bin

rem Configuración permanente para que sea válida también en los Símbolos del sistema que se abran más adelante
setx MY_APP_HOME "%INSTALL_DIR%"
setx MY_APP_VERSION "1.0.0"

echo.
echo La configuración ha finalizado.
echo Para aplicar las variables de entorno, abra un nuevo Símbolo del sistema.

endlocal
Por qué se combinan set y setx

En un script de instalación, a veces se desea ejecutar un comando inmediatamente después de instalar. Como setx no se refleja en la sesión actual, un patrón práctico es definir la variable temporalmente con set y, a la vez, configurarla de forma permanente con setx para las sesiones futuras. Cabe señalar que este script no agrega nada de forma permanente a PATH. Para modificar PATH de forma permanente, utilice el método con PowerShell de la sección anterior.

Eliminar variables de entorno permanentes

setx no tiene ninguna opción para eliminar variables. Para eliminar una variable de entorno de usuario, se elimina del Registro con reg delete.

reg delete "HKCU\Environment" /v MY_APP_HOME /f

En el caso de variables de entorno del sistema, ejecute el siguiente comando como administrador.

reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MY_APP_HOME /f

Como reg delete edita el registro directamente, es posible que el cambio no se vea en los Símbolos del sistema abiertos desde un Explorador ya en ejecución hasta que cierre sesión y vuelva a iniciarla. Tampoco elimina la variable de la sesión actual, así que ejecute set MY_APP_HOME= si es necesario.

Consultar y editar variables de entorno desde la interfaz gráfica

Si no está familiarizado con la línea de comandos, o para editar PATH de forma segura, la interfaz gráfica resulta conveniente.

Al presionar Win + R y escribir sysdm.cpl, se abre «Propiedades del sistema». Desde el botón «Variables de entorno» de la pestaña «Opciones avanzadas», se pueden consultar y editar por separado las variables de usuario y las del sistema.

Resumen

OperaciónComando
Definir una variable temporalset nombre_de_variable=valor
Definir una variable permanente (usuario)setx nombre_de_variable "valor"
Definir una variable permanente (sistema)setx nombre_de_variable "valor" /M (requiere permisos de administrador)
Agregar a PATH temporalmenteset PATH=%PATH%;ruta_a_agregar
Comprobar una variableecho %nombre_de_variable%
Mostrar todas las variablesset
Editar desde la interfaz gráficaEjecutar sysdm.cpl

Artículos relacionados

Ejercicio

Problema de práctica

Si se establece una variable de entorno con el comando setx, ¿cuándo se puede usar esa variable en la sesión actual del Símbolo del sistema?

回答がサーバーに送信されることはありません
#Símbolo del sistema #Archivos por lotes #Variables de entorno #set #setx #PATH