¿Establecer y obtener variables de entorno de Windows desde el símbolo del sistema?

220

Quiero establecer una variable de entorno desde el símbolo del sistema y luego poder acceder a ella globalmente (por ejemplo, debería verla yendo a Sistema -> Variables de entorno).

Cuando uso el comando set, no es accesible en una nueva sesión de cmd.

set NEWVAR=SOMETHING
echo %NEWVAR%

Preguntas relacionadas:

Shane
fuente
1
valor variable setx - luego reinicie Símbolo del sistema
Andrew

Respuestas:

252

Para que la variable de entorno sea accesible globalmente, debe configurarla en el registro. Como te has dado cuenta simplemente usando:

establecer NEWVAR = ALGO

solo lo está configurando en el espacio de proceso actual.

De acuerdo con esta página , puede usar el setxcomando:

setx NEWVAR ALGO

setxestá integrado en Windows 7, pero para versiones anteriores solo puede estar disponible si instala el Kit de recursos de Windows

ChrisF
fuente
44
Tenga en cuenta que debe especificar la cuota, por ejemplo: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"funcionará. Pero setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45le dará errores de sintaxis
MD. Mohiuddin Ahmed
55
@ MD.MohiuddinAhmed Eso es porque hay espacios en el camino.
ChrisF
36

También podemos usar "setx var variable / M" para establecer var al nivel de variable de entorno del sistema en lugar del nivel de usuario.

Nota: Este comando debe ejecutarse como administrador.

Minh Chau
fuente
10
setx program "C:\Program Files" /M

/ M para establecer el nivel variable de entorno del sistema en lugar del nivel de usuario como @Minh Chau responde

Prueba ingrese la descripción de la imagen aquí

REINICIAR línea de comando (si no reinicia la línea de comando, la variable de entorno no funcionará)

ingrese la descripción de la imagen aquí

Phan Van Linh
fuente
Esto duplica otra respuesta y no agrega contenido nuevo. No publique una respuesta a menos que realmente tenga algo nuevo que aportar.
DavidPostill
8
@DavidPostill mi respuesta tiene una nueva es que necesitamos reiniciar la línea de comandos. Creo que es importante
Phan Van Linh
2

Puede usar setx env var [/M]como se mencionó anteriormente. Si no tiene efecto, puede usar refreshenvpara actualizar las variables de entorno. No tiene que reiniciar su computadora, explorer.exe o su símbolo del sistema para hacerlo.

Editar: aparentemente refreshenv no viene naturalmente con Windows, así que aquí está la fuente: https://pastebin.com/1fJqA0pT
Guardar como RefreshEnv.cmd y colocarlo en una carpeta que se incluye en las variables de entorno PATH

DFSFOT
fuente
1
+1 por mencionar 'refreshenv' - ¡Nunca había visto eso antes!
Francis Norton
1

Las variables del sistema se pueden configurar a través de CMD y 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
Por favor lea la pregunta otra vez cuidadosamente. Su respuesta no responde a la pregunta original.
DavidPostill
Sin embargo, está cerca. ¿Usar REG ADD puede lograr esto?
TOOGAM
0

Quiero agregar que si está utilizando el parámetro / s con setx para establecer variables de entorno en una computadora remota, el servicio "Registro remoto" debe ejecutarse en la máquina de destino o de lo contrario recibirá un "ERROR: el la operación especificada no se pudo completar ".

(Le pedí a Microsoft que actualice su artículo de TechNet sobre setx para incluir esta información).

Tim Bailen
fuente