¿Cómo enumerar las variables de entorno globales por separado de las variables de entorno específicas del usuario?
13
En Windows (por ejemplo, la versión 10) puede enumerar las variables de entorno con el comando
set
¿Cómo enumera solo las variables de entorno que son las mismas para todos los usuarios o solo las variables de entorno que son para el usuario o sesión actual?
Si establece permanentemente su propia variable de entorno utilizando el setx variable valuecomando, se almacena en el registro pero no está disponible de inmediato.
C:\>setx test removeme
SUCCESS: Specified value was saved.
C:\>reg query "HKCU\Environment"
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
test REG_SZ removeme
Si usa el set variable=valuecomando, la variable está disponible de inmediato pero no se almacena en el registro. No puede usar el regcomando para enumerarlos aunque se muestran por set. Estas variables de entorno temporales no persisten después de finalizar la sesión del símbolo del sistema.
Variables de entorno dinámico
Hay construcciones que actúan como variables de entorno que no se almacenan en el registro de esta manera. Por ejemplo:
Solo una curiosidad: ¿es posible actualizar la variable previamente agregada al registro? por ejemplo setx test removeme, algo set test %test%para que pueda tener todas las variables enumeradas con un simple set? Estaba pensando que es posible implementar un comando / script por lotes para hacerlos explícitos a pedido ...
Hastur
@Hastur: Sí, eso funcionaría para hacer que una nueva variable esté disponible de inmediato y sea persistente.
RedGrittyBrick
@hastur @RedGrittyBrick: es posible, pero definitivamente no es una línea en cmd de Windows. Si instala a chocolate que tiene refreshenv.cmdutilidad que es de 10 líneas de código y, básicamente, se consulta y refresca entradas del Registro
maoizm
¿El SETcomando muestra variables de entorno dinámico? Estoy tratando de encontrar cualquier cosa y todo lo que las herramientas de compilación de Microsoft establecieron durante una sesión, solo quiero cubrir mis bases.
Ungeheuer
2
Para una salida limpia sin líneas adicionales y espacios negros, use los siguientes comandos en cmd.exe:
Variables de entorno del usuario:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Variables de entorno globales (del sistema):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Funciona en Windows 7-10, y muy probablemente también en versiones anteriores.
Gracias por esto. Tenga en cuenta que descarta parte del valor si tiene espacios en él. Entonces, una entrada de registro como VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools aparece como justa VS140COMNTOOLS=C:\Program.
metal el
@metal gracias por informar sobre este caso de esquina. Siéntase libre de editar la respuesta si encuentra una solución para los espacios - No tengo ninguna computadora con Windows ahora
maoizm
He enviado una actualización a tal efecto. Usted o algún mod necesitarán aprobarlo.
metal
1
escriba el comando por lotes: echo% temp%
Si la variable de entorno "temp" contiene "H: \ Users \ amacm \ AppData \ Local", Windows responderá inmediatamente con lo siguiente:
H: \ Users \ amacm \ AppData \ Local
Si no hay una variable de entorno llamada "temp", Windows responderá con lo siguiente:
setx test removeme
, algoset test %test%
para que pueda tener todas las variables enumeradas con un simpleset
? Estaba pensando que es posible implementar un comando / script por lotes para hacerlos explícitos a pedido ...refreshenv.cmd
utilidad que es de 10 líneas de código y, básicamente, se consulta y refresca entradas del RegistroSET
comando muestra variables de entorno dinámico? Estoy tratando de encontrar cualquier cosa y todo lo que las herramientas de compilación de Microsoft establecieron durante una sesión, solo quiero cubrir mis bases.Para una salida limpia sin líneas adicionales y espacios negros, use los siguientes comandos en
cmd.exe
:Variables de entorno del usuario:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Variables de entorno globales (del sistema):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Funciona en Windows 7-10, y muy probablemente también en versiones anteriores.
fuente
VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
aparece como justaVS140COMNTOOLS=C:\Program
.escriba el comando por lotes: echo% temp%
Si la variable de entorno "temp" contiene "H: \ Users \ amacm \ AppData \ Local", Windows responderá inmediatamente con lo siguiente:
H: \ Users \ amacm \ AppData \ Local
Si no hay una variable de entorno llamada "temp", Windows responderá con lo siguiente:
%temperatura%
fuente