Tengo que establecer variables de entorno en diferentes máquinas con Windows, pero no quiero que me molesten en cambiarlas manualmente accediendo a la pantalla de propiedades de "Mi PC".
Quiero hacerlo desde la línea de comandos, con un archivo por lotes. Por lo que tengo entendido, el uso de set solo cambiará la variable para los procesos que llamaré en la ventana de comandos.
Quiero configurarlo definitivamente, así que más tarde, cuando ejecute un nuevo proceso, usará las nuevas configuraciones que he establecido. ¿Hay alguna forma de hacerlo desde la línea de comandos?
Respuestas:
Use el comando SETX (tenga en cuenta el sufijo 'x') para establecer variables que persisten después de que se haya cerrado la ventana cmd.
Por ejemplo, para establecer un env var "foo" con el valor de "bar":
Aunque vale la pena leer las 'notas' que se muestran si imprime el uso (
setx /?
), en particular:En PowerShell, el comando [Environment] :: SetEnvironmentVariable .
fuente
[Environment]::SetEnvironmentVariable('PATH', "Whatever you need it to be", "Machine")
ver msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspxLa documentación de MSDN para variables de entorno le indica qué hacer:
Por supuesto, necesitará derechos de administrador para hacer esto. No conozco ninguna forma de transmitir un mensaje de Windows desde un lote de Windows, por lo que deberá escribir un pequeño programa para hacer esto.
fuente
setx
por debajo?fuente
setx
(y sin posibilidad de instalarlo). Uso simple (en mi caso):wsh.Environment("user").Item("myVar") = "my value"
De hecho, SET TEST_VARIABLE = value funciona solo para el proceso actual, por lo que
SETX
es obligatorio. Un ejemplo rápido para almacenar permanentemente una variable de entorno a nivel de usuario.SETX TEST_VARIABLE etc
. Aún no se ha aplicado (echo %TEST_VARIABLE%
muestra%TEST_VARIABLE%
,echo %TEST_VARIABLE%
muestraetc
.etc
.fuente
fuente