Comment répertorier les variables d'environnement globales séparément des variables d'environnement spécifiques à l'utilisateur?
13
Sous Windows (par exemple, version 10), vous pouvez répertorier les variables d'environnement à l'aide de la commande
set
Comment répertoriez-vous uniquement les variables d'environnement qui sont les mêmes pour tous les utilisateurs ou uniquement les variables d'environnement qui sont pour l'utilisateur ou la session en cours?
Si vous définissez définitivement votre propre variable d'environnement à l'aide de la setx variable valuecommande, elle est stockée dans le registre mais n'est pas immédiatement disponible.
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 vous utilisez la set variable=valuecommande, la variable est disponible immédiatement mais n'est pas stockée dans le registre. Vous ne pouvez pas utiliser la regcommande pour les répertorier bien qu'ils soient affichés par set. Ces variables d'environnement temporaires ne persistent pas après la fin de la session d'invite de commandes.
Variables d'environnement dynamique
Il existe des constructions qui agissent comme des variables d'environnement qui ne sont pas stockées dans le registre de cette manière. Par exemple:
Juste une curiosité: est-il possible de rafraîchir la variable précédemment ajoutée au registre? par exemple setx test removemealors quelque chose set test %test%afin que vous puissiez avoir toutes les variables répertoriées avec un simple set? Je pensais qu'il était possible d'implémenter un script de commande / batch pour les rendre explicites sur demande ...
Hastur
@Hastur: Oui, cela fonctionnerait pour rendre une nouvelle variable immédiatement disponible et persistante.
RedGrittyBrick
@hastur @RedGrittyBrick - c'est possible mais ce n'est certainement pas un oneliner dans windows cmd. Si vous installez chocolatey, il a un refreshenv.cmdutilitaire qui est de 10 lignes de code et, fondamentalement, il interroge et actualise les entrées de registre
maoizm
La SETcommande affiche- t-elle les variables d'environnement dynamique? J'essaie de trouver tout et tout ce que les outils de construction de Microsoft ont défini pendant une session, je veux juste couvrir mes bases.
Ungeheuer
2
Pour une sortie nette sans lignes supplémentaires ni espaces noirs, utilisez les commandes suivantes dans cmd.exe:
Variables d'environnement utilisateur:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Variables d'environnement globales (système):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Il fonctionne dans Windows 7-10, et très probablement dans les versions antérieures également.
Merci pour cela. Notez qu'il supprime une partie de la valeur s'il contient des espaces. Donc, une entrée de registre comme VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools apparaît juste VS140COMNTOOLS=C:\Program.
metal
@metal merci d'avoir signalé ce cas d'angle. N'hésitez pas à modifier la réponse si vous trouvez une solution de contournement pour les espaces - je n'ai pas d'ordinateurs Windows maintenant
maoizm
J'ai soumis une mise à jour à cet effet. Vous ou un mod devrez l'approuver.
métal
1
tapez la commande batch: echo% temp%
Si la variable d'environnement "temp" contient "H: \ Users \ amacm \ AppData \ Local", Windows répondra immédiatement par ce qui suit:
H: \ Users \ amacm \ AppData \ Local
S'il n'y a pas de variable d'environnement nommée "temp", Windows répondra comme suit:
setx test removeme
alors quelque choseset test %test%
afin que vous puissiez avoir toutes les variables répertoriées avec un simpleset
? Je pensais qu'il était possible d'implémenter un script de commande / batch pour les rendre explicites sur demande ...refreshenv.cmd
utilitaire qui est de 10 lignes de code et, fondamentalement, il interroge et actualise les entrées de registreSET
commande affiche- t-elle les variables d'environnement dynamique? J'essaie de trouver tout et tout ce que les outils de construction de Microsoft ont défini pendant une session, je veux juste couvrir mes bases.Pour une sortie nette sans lignes supplémentaires ni espaces noirs, utilisez les commandes suivantes dans
cmd.exe
:Variables d'environnement utilisateur:
FOR /F "tokens=1,3* skip=2" %G IN ('reg query HKCU\Environment') DO @echo %G=%H %I
Variables d'environnement globales (système):
FOR /F "tokens=1,3* skip=2" %G IN ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"') DO @echo %G=%H %I
Il fonctionne dans Windows 7-10, et très probablement dans les versions antérieures également.
la source
VS140COMNTOOLS REG_SZ C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools
apparaît justeVS140COMNTOOLS=C:\Program
.tapez la commande batch: echo% temp%
Si la variable d'environnement "temp" contient "H: \ Users \ amacm \ AppData \ Local", Windows répondra immédiatement par ce qui suit:
H: \ Users \ amacm \ AppData \ Local
S'il n'y a pas de variable d'environnement nommée "temp", Windows répondra comme suit:
% temp%
la source