Typischerweise wollen Sie der aktuellen Definition des Prozess eine Umgebungsvariable:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
Dies ist das Äquivalent (man beachte das Fehlen von %
aro und der Variablenname):
CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
Caveat: Den ("Process)
Teil nicht auslassen: wenn Sie das tun, werden Sie die System Anwendungsbereich der Definition der Variablen erhalten; siehe unten.
.ExpandEnvironmentStrings
ist vom Konzept her einfacher und flexibler: Es kann beliebige Strings mit eingebettet (%
-enclosed) Umwelt-Variablenreferenzen erweitern; z.B .:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%")
In seltenen Fällen Sie Zugang umweltVariablenDefinitionen von einem spezifischen Anwendungsbereich (anders als der aktuelle Prozess ist) aufweisen kann.
sScope = "System" ' May be: "Process", "User", "Volatile", "System"
CreateObject("WScript.Shell").Environment(sScope).Item("TEMP")
Anmerkung: Wie bereits erwähnt, auf den System
Umfang den Umfang Argument defaults weggelassen.
Caveat: Wert auf diese Weise Zugriff auf nicht erweitern es: Umwelt-Variablenwerte können verschachtelte sein: sie andere Umgebungsvariablen beziehen.
Im obigen Beispiel ist der Rückgabewert %SystemRoot%\TEMP
, der die nicht erweiterte Referenz auf %SystemRoot%
enthält.
Um das Ergebnis zu erweitern, übergeben Sie es wie oben gezeigt an .ExpandEnvironmentStrings()
.
Das von CreateObject ("WScript.Network" ') ([https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx) zurückgegebene [Objekt] stellt generisch nicht bereit Umgebungsvariabler Zugriff, es werden nur 3 Werte als Eigenschaften angezeigt, die sich auch in Umgebungsvariablen widerspiegeln: 'ComputerName',' UserDomain' und 'UserName'. Der Grund dafür, dass Ihr letztes Beispiel nicht funktioniert, ist' WshShell. Environment ist dasselbe wie 'WshShell.Environment (" System ")', und '% USERNAME%' ist nicht im Bereich _system_ definiert. – mklement0