¿Establecer una variable de entorno del sistema desde un archivo por lotes de Windows?

195

¿Es posible establecer una variable de entorno en el nivel del sistema desde un símbolo del sistema en Windows 7 (o incluso XP para el caso). Me estoy ejecutando desde un símbolo del sistema elevado.

Cuando uso el setcomando ( set name=value), la variable de entorno parece ser solo válida para la sesión del símbolo del sistema.

Santhosh
fuente

Respuestas:

179

Las herramientas de soporte de XP (que se pueden instalar desde su CD de XP) vienen con un programa llamado setx.exe:

C:\Program Files\Support Tools>setx /?

SETX: This program is used to set values in the environment
of the machine or currently logged on user using one of three modes.

1) Command Line Mode: setx variable value [-m]
   Optional Switches:
    -m  Set value in the Machine environment. Default is User.

...
For more information and example use: SETX -i

Creo que Windows 7 realmente viene setxcomo parte de una instalación estándar.

Hugh Allen
fuente
77
¿Windows 7 (quizás Vista ya) tiene un estándar setx, con un cambio menor? no hay -ibandera y solo se ejecuta setx /?muestra todos los ejemplos de ayuda +
stijn
3
Recuerde que siempre puede verificar si tiene este programa en su camino escribiendo wherey luego el nombre del programa (por lo tanto, en este caso where setx.exeal probar esto en un cuadro de Server 2008 y Server 2008SP2 descubrí que en ambos casos existía en%windir%\System32\setx.exe
aolszowka
2
@stijn: la versión Win7 también cambió oficialmente el introductor de la bandera -a la barra diagonal /. Sin embargo, parece que la -versión aún funciona.
TED
2
Parece que hay un límite de longitud de 1024 para el contenido variable
setx
El setx proporcionado por XP SP2 Support Tools requiere barra diagonal /y el guión -no funciona. setx variable value /m
Keith el
137

Ejemplo simple de cómo configurar JAVA_HOME con setx.exeen la línea de comando:

setx JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Esto establecerá la variable de entorno "JAVA_HOME" para el usuario actual. Si desea establecer una variable para todos los usuarios, debe usar la opción "-m". Aquí hay un ejemplo:

setx -m JAVA_HOME "C:\Program Files (x86)\Java\jdk1.7.0_04"

Nota : debe ejecutar este comando como administrador.

Nota : asegúrese de ejecutar el comando setx desde una ventana de administración de la línea de comandos

Mindaugas Jaraminas
fuente
77
También tenga en cuenta que a algunas herramientas no les gustan los espacios en JAVA_HOME, por lo que vale la pena usarlo Progra~1así: setx /M JAVA_HOME "C:\Progra~1\Java\jdk1.7.0_09"
samael
1
Donde ha estado esto toda mi vida.
Philip Rego
20

Si establece una variable a través de SETX, no puede usar esta variable o sus cambios de inmediato. Debe reiniciar los procesos que desean usarlo.

Use la siguiente secuencia para configurarlo directamente en el proceso de configuración también (funciona perfectamente para mí en scripts que hacen algunas cosas de inicio después de configurar variables globales) :

SET XYZ=test
SETX XYZ test
Anton F.
fuente
¡Gracias, esto me estaba volviendo loco! ¡CMD.EXE necesita desesperadamente una actualización para comportarse como una consola normal ...!
Salvador Valencia
No entiendo esto: ¿dónde ejecuto esas 2 líneas?
Danijel
1
También puede ejecutar el comando refreshenvdespués de usar setx para usar las nuevas variables.
BrianHVB
@BrianHVB refreshenvno reconocido como un comando. ¿Estás haciendo esto en cmdo powershell? (EDITAR: probado en ambos en realidad, no funciona en ninguna de las consolas)
bigp
@bigp oops, tienes razón. Es un comando que se agrega cuando se instala chocolatey. Tengo chocolate en todos mis sistemas y no me di cuenta hasta que lo busqué.
BrianHVB
2

Para XP, utilicé una herramienta (gratuita / donateware) llamada "RAPIDEE" (Rapid Environment Editor), pero SETX es definitivamente suficiente para Win 7 (no sabía sobre esto antes).

FractalSpace
fuente
2

Las variables del sistema se pueden configurar a través de CMD y el registro Por ej. consulta de registro "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v RUTA

Todos los códigos CMD comúnmente utilizados y las variables del sistema se dan aquí: establezca las variables de entorno del sistema de Windows usando CMD .

Abra CMD y escriba Set

Obtendrá todos los valores de la variable del sistema.

Escriba set java para conocer los detalles de la ruta de java instalada en su sistema operativo de ventana.

Himanshu Singh
fuente
1

En caso de que necesite eliminar una variable, puede usar SETENV de Vincent Fatica disponible en http://barnyard.syr.edu/~vefatica . No es exactamente reciente ('98) pero aún funciona en Windows 7 x64.

abortar
fuente
55
setx le permite eliminar también estableciendo el valor en blanco
Steve Lloyd