Variables de entorno y PATH permanentes
¿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
Para comprobar una variable específica, use echo.
echo %PATH%

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

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

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

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門
Variables de entorno del sistema de uso frecuente
| Nombre de la variable | Descripción | Ejemplo |
|---|---|---|
%PATH% | Rutas de búsqueda de archivos ejecutables | C:\Windows\System32;... |
%TEMP% / %TMP% | Ubicación de los archivos temporales | C:\Users\user\AppData\Local\Temp |
%USERNAME% | Nombre del usuario actual | user |
%COMPUTERNAME% | Nombre del equipo | DESKTOP-XXXX |
%USERPROFILE% | Ruta de la carpeta del usuario | C:\Users\user |
%APPDATA% | Carpeta de datos de aplicaciones | C:\Users\user\AppData\Roaming |
%WINDIR% | Carpeta de Windows | C:\Windows |
%SYSTEMROOT% | Carpeta del sistema de Windows | C:\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%
Para eliminar una variable, deje el valor vacío.
set MY_APP_HOME=
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%
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"
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"
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
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%
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
| Elemento | set | setx |
|---|---|---|
| Alcance | Solo la sesión actual | Permanente (válida incluso después de reiniciar) |
| Sintaxis | set VAR=valor | setx VAR "valor" |
| Reflejo en la sesión actual | Inmediato | No se refleja (válida en una ventana nueva) |
| Configuración a nivel del sistema | No es posible | Posible con la opción /M |
| Permisos de administrador | No se necesitan | No se necesitan para variables de usuario; sí para variables del sistema |
| Uso temporal dentro de archivos por lotes | Adecuado | No 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
Agregar a PATH de forma permanente (setx)
setx PATH "%PATH%;C:\MyTools"
%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.
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')"
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
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ón | Comando |
|---|---|
| Definir una variable temporal | set 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 temporalmente | set PATH=%PATH%;ruta_a_agregar |
| Comprobar una variable | echo %nombre_de_variable% |
| Mostrar todas las variables | set |
| Editar desde la interfaz gráfica | Ejecutar sysdm.cpl |