Listar todas las variables de entorno desde la línea de comando

934

¿Es posible enumerar todas las variables de entorno desde el símbolo del sistema de Windows?

Algo equivalente a PowerShell gci env:(o ls env:o dir env:).

Nicola Cossu
fuente
1
¿Alguien puede compartir una solución PowerShell? Se supone que es el futuro y todo. ¿Derecha?
Bruno Bronosky
1
@BrunoBronosky la solución PS está incluida en la pregunta, y también hay una respuesta que la repite =)
Jon
Para obtener una descripción de cada uno, visite ss64.com/nt/syntax-variables.html
Samuel Harmer

Respuestas:

1354

Solo haz:

SET

También puede hacer SET prefixpara ver todas las variables con nombres que comienzan con prefix.

Por ejemplo, si desea leer solo derbydb de las variables de entorno, haga lo siguiente:

set derby 

... y obtendrás lo siguiente:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Jon
fuente
77
Esto me pide un nombre?
CMCDragonkai
53
@KevinMeredith: todos los comandos en el shell de Windows no distinguen entre mayúsculas y minúsculas.
Jon
12
@CMCDragonkai ¿estás usando powershell? Parece que se ha configurado con uno de sus comandos. ¡Esta es una de sus características menos útiles! Hice una pregunta sobre cómo deshabilitar esto aquí
JonnyRaa
3
¿Alguien puede actualizar esto para incluir una solución PowerShell? Se supone que es el futuro y todo. ¿Derecha?
Bruno Bronosky
3
@NickTimmer ya que estás hablando con bash en lugar del shell de Windows, esta es la pregunta / respuesta incorrecta para ti. Mira printenv.
Jon
167

Jon tiene la respuesta correcta, pero para elaborar un poco más con un poco de azúcar sintáctica ...

SET | more

le permite ver las variables una página a la vez, en lugar de todo el lote, o

SET > output.txt

envía la salida a un archivo output.txt que puede abrir en el Bloc de notas o lo que sea ...

Fetchez la vache
fuente
77
No tenía idea de que moreexistía en Windows, +1
nuevo nuevo
en realidad también está integrado en algunas funciones. Dir, por ejemplo, página con a / p.
John Lord
@ardnew: Ahora sabes más ;-)
user2943111
107

Para enumerar todas las variables de entorno en PowerShell:

Get-ChildItem Env:

O como lo sugiere el usuario797717 para evitar el truncamiento de salida:

Get-ChildItem Env: | Format-Table -Wrap -AutoSize

Fuente: Creación y modificación de variables de entorno ( Consejo de la semana de Windows PowerShell )

usuario52028778
fuente
44
Incluso si no uso PowerShell porque no funciona para cada comando cmd, esta es la única solución para una impresión bonita (en 2 columnas) sin grandes esfuerzos. Para lograr el mismo comportamiento en cmd, necesita algo como esto for /f "tokens=1,2 delims==" ...que se vuelve muy complicado ...
ROMANIA_engineer
66
Para evitar que la salida se trunca, usaría lo siguiente:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717
1
gci env:en cambio Get-ChildItem Env:, más fácil de recordar
matson kepson
¡Perfecto! No veo por qué esta no es la mejor respuesta para ser honesto: / EDITAR: Oh, espera, veo por qué ... la pregunta original no era sobre cómo hacerlo en Powershell, sino en la vieja escuela Commandprompt: D
Yoeri Van Nieuwerburg
79

Simplemente huye setde cmd.

Muestra, establece o elimina variables de entorno. Utilizado sin parámetros, set muestra la configuración actual del entorno.

Grant Thomas
fuente
11

Puedes usar SETen cmd

Para mostrar la variable actual, solo SET es suficiente

Para mostrar ciertas variables como 'RUTA', use SET PATH.

Para obtener ayuda, escriba set /?.

Boyce Field
fuente
2
¿Cómo es esto diferente de las respuestas existentes?
Peter Mortensen
7

No pierdas el tiempo. Búscalo en el registro:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

devuelve menos que el comando SET.

Paweł Piwowar
fuente
2
aunque eso podría ser cierto, una diferencia es que la consulta del registro devuelve REG_EXPAND_SZclaves no expandidas . Por ejemplo reg query "HKCU\Environment", me muestra que mi %TEMP%variable depende del valor de %USERPROFILE%, por lo que si ese valor cambia, también lo haría el valor de %TEMP%. Por el contrario, SETsolo regresa"C:\Users\mpag\AppData\Local\Temp"
mpag
1
¿Por qué dices "no pierdas el tiempo"? ¿No está escribiendo "set" en el símbolo del sistema más rápido que "reg query ..."?
Alexandre Huat
4

Si desea ver la variable de entorno que acaba de configurar, debe abrir una nueva ventana de comandos.

Las variables configuradas con variables setx están disponibles solo en futuras ventanas de comandos, no en la ventana de comandos actual. ( Setx, ejemplos )

capitán puget
fuente
4

Como se menciona en otras respuestas, puede usar set para enumerar todas las variables de entorno o usar

set [environment_variable] para obtener una variable específica con su valor.

set [environment_variable]= se puede usar para eliminar una variable del espacio de trabajo.

Abhishek Gurjar
fuente
1
Sí, pero ¿cómo responde esto a la pregunta?
Peter Mortensen