CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
Ceci est l'équivalent de (notez l'absence de %
aro und le nom de la variable):
CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
caveat: Ne pas omettre la ("Process)
partie: si vous le faites, vous aurez la définition de la portée du système de la variable; voir ci-dessous.
.ExpandEnvironmentStrings
est conceptuellement plus simple et plus souple: Il peut se développer arbitraires avec des chaînes intégrées (%
-enclosed) références de l'environnement variable; .: par exemple
CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%")
En de rares occasions, vous pouvez avoir à accès définitions de l'environnement variable d'un champ spécifique (autre que celui du processus en cours).
sScope = "System" ' May be: "Process", "User", "Volatile", "System"
CreateObject("WScript.Shell").Environment(sScope).Item("TEMP")
Note: Comme indiqué ci-dessus, en omettant les valeurs par défaut d'argument de portée à la portée System
.
caveat: L'accès à une valeur de cette façon ne développer il: les valeurs de l'environnement variables peut être imbriquée: ils peuvent se référer à d'autres variables d'environnement.
Dans l'exemple ci-dessus, la valeur renvoyée est %SystemRoot%\TEMP
, qui contient la référence non expansée référence à %SystemRoot%
.
Pour développer le résultat, transmettez-le à .ExpandEnvironmentStrings()
, comme démontré ci-dessus.
L'objet [retourné par 'CreateObject (" WScript.Network "'] (https://msdn.microsoft.com/fr-fr/library/s6wt333f (v = vs.84) .aspx) ne fournit pas de générique l'accès à la variable d'environnement, il arrive juste d'exposer 3 valeurs comme des propriétés qui sont également reflétées dans les variables d'environnement: 'ComputerName',' UserDomain', et 'UserName' La raison pour laquelle votre dernier exemple ne fonctionne pas est' WshShell. Environment' est le même que 'WshShell.Environment (" System ")', et '% USERNAME%' n'est pas défini dans la portée _system_. – mklement0