Liste toutes les variables d'environnement à partir de la ligne de commande

934

Est-il possible de répertorier toutes les variables d'environnement à partir d'une invite de commande Windows?

Quelque chose d'équivalent à PowerShell gci env:(ou ls env:ou dir env:).

Nicola Cossu
la source
1
Quelqu'un peut-il partager une solution PowerShell? C'est censé être l'avenir et tout. Droite?
Bruno Bronosky
1
@BrunoBronosky la solution PS est incluse dans la question, et il y a aussi une réponse la répétant =)
Jon
Pour une description de chacun, voir ss64.com/nt/syntax-variables.html
Samuel Harmer

Réponses:

1354

Faites juste:

SET

Vous pouvez également SET prefixvoir toutes les variables dont le nom commence par prefix.

Par exemple, si vous souhaitez lire uniquement derbydb à partir des variables d'environnement, procédez comme suit:

set derby 

... et vous obtiendrez ce qui suit:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Jon
la source
7
Cela me demande un nom?
CMCDragonkai
53
@KevinMeredith: Toutes les commandes du shell Windows ne respectent pas la casse.
Jon
12
@CMCDragonkai utilisez-vous PowerShell? Il semble qu'il ait hikacké avec l'un de ses command-let. C'est l'une de ses fonctionnalités les moins utiles! J'ai posé une question sur la désactivation de ceci ici
JonnyRaa
3
Quelqu'un peut-il mettre à jour cela pour inclure une solution PowerShell? C'est censé être l'avenir et tout. Droite?
Bruno Bronosky
3
@NickTimmer puisque vous parlez de bash au lieu du shell Windows, ce n'est pas la bonne question / réponse pour vous. Regardez printenv.
Jon
167

Jon a la bonne réponse, mais pour élaborer un peu plus avec du sucre syntaxique ..

SET | more

vous permet de voir les variables une page à la fois, plutôt que l'ensemble du lot, ou

SET > output.txt

envoie la sortie dans un fichier output.txt que vous pouvez ouvrir dans le Bloc - notes ou autre chose ...

Fetchez la vache
la source
7
je n'avais aucune idée qu'il moreexistait sur Windows, +1
ardnew
il est également intégré à certaines fonctions. Dir par exemple va paginer avec un / p.
John Lord
@ardnew: Maintenant, vous en savez plus ;-)
user2943111
107

Pour répertorier toutes les variables d'environnement dans PowerShell:

Get-ChildItem Env:

Ou comme suggéré par user797717 pour éviter la troncature de sortie:

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

Source: création et modification de variables d'environnement ( astuce Windows PowerShell de la semaine )

user52028778
la source
4
Même si je n'utilise pas PowerShell car il ne fonctionne pas pour chaque commande cmd, c'est la seule solution pour une jolie impression (sur 2 colonnes) sans gros efforts. Pour obtenir le même comportement en cmd, vous avez besoin de quelque chose comme ça for /f "tokens=1,2 delims==" ...qui devient très compliqué ...
ROMANIA_engineer
6
Pour éviter que la sortie ne soit tronquée, j'utiliserais ce qui suit:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717
1
gci env:au lieu de cela Get-ChildItem Env:, plus facile à retenir
matson kepson
Parfait! Je ne vois pas pourquoi ce n'est pas la première réponse pour être honnête: / EDIT: Oh, attendez, je vois pourquoi ... la question initiale n'était pas de savoir comment le faire à Powershell, mais dans la vieille école Invite de commandement: D
Yoeri Van Nieuwerburg
79

Exécutez simplement à setpartir de cmd.

Affiche, définit ou supprime des variables d'environnement. Utilisé sans paramètres, set affiche les paramètres d'environnement actuels.

Grant Thomas
la source
11

Vous pouvez utiliser SETen cmd

Pour afficher la variable actuelle, tout SETest assez

Pour afficher certaines variables telles que «PATH», utilisez SET PATH.

Pour obtenir de l'aide, tapez set /?.

Champ de Boyce
la source
2
En quoi est-ce différent des réponses existantes?
Peter Mortensen
7

Ne perdez pas de temps. Recherchez-le dans le registre:

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

renvoie moins que la commande SET.

Paweł Piwowar
la source
2
bien que cela puisse être vrai, une différence est que la requête de registre renvoie des REG_EXPAND_SZclés non développées . Par exemple reg query "HKCU\Environment", me montre que ma %TEMP%variable dépend de la valeur de %USERPROFILE%, donc si cette valeur change, la valeur de %TEMP%. En revanche, SETrevient juste"C:\Users\mpag\AppData\Local\Temp"
mpag
1
Pourquoi dites-vous "ne perdez pas de temps"? N'est-ce pas écrire "set" dans l'invite de commande plus rapidement que "reg query ..."?
Alexandre Huat
4

Si vous souhaitez voir la variable d'environnement que vous venez de définir, vous devez ouvrir une nouvelle fenêtre de commande.

Les variables définies avec les variables setx ne seront disponibles que dans les futures fenêtres de commandes, et non dans la fenêtre de commandes actuelle. ( Setx, exemples )

capitaine puget
la source
4

Comme mentionné dans d'autres réponses, vous pouvez utiliser set pour répertorier toutes les variables d'environnement ou utiliser

set [environment_variable] pour obtenir une variable spécifique avec sa valeur.

set [environment_variable]= peut être utilisé pour supprimer une variable de l'espace de travail.

Abhishek Gurjar
la source
1
Oui, mais comment cela répond-il à la question?
Peter Mortensen