CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
Este es el equivalente de (nótese la ausencia de %
aro und el nombre de variable):
CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
Advertencia: No omita la parte ("Process)
: si lo hace, obtendrá definición del sistema de del ámbito de la variable; vea abajo.
.ExpandEnvironmentStrings
es conceptualmente simple y más flexible: Se puede ampliar arbitrarias cuerdas con incrustados (%
con cerramiento) referencias-variable de entorno; ej .:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%")
En raras ocasiones puede que tenga que acceso definiciones favorables al medio variable de un ámbito específico (que no sea el actual proceso de).
sScope = "System" ' May be: "Process", "User", "Volatile", "System"
CreateObject("WScript.Shell").Environment(sScope).Item("TEMP")
Nota: Como se ha señalado anteriormente, omitiendo los valores por defecto de los argumentos alcance al alcance System
.
Advertencia: Acceso a un valor de esta manera no ampliar que: los valores del medio variable puede ser anidada : pueden referirse a otras variables de entorno .
En el ejemplo anterior, el valor de retorno es %SystemRoot%\TEMP
, que contiene sin expandir referencia a %SystemRoot%
.
Para expandir el resultado, páselo a .ExpandEnvironmentStrings()
, como se demostró anteriormente.
El [objeto devuelto por 'CreateObject (" WScript.Network "'] (https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx) no proporciona genéricos acceso a variable de entorno, sucede que expone 3 valores como propiedades que también se reflejan en variables de entorno: 'ComputerName',' UserDomain', y 'UserName'. La razón por la que su último ejemplo no funciona es' WshShell. Environment' es lo mismo que 'WshShell.Environment (" System ")', y '% USERNAME%' no está definido en _system_ scope. – mklement0