Ich muss verstehen, wie globale gegen Benutzervariablen in den Fenstern arbeiten.
Fall 1: Wenn dieselbe Variable im Benutzer- und im globalen Abschnitt definiert ist, wie ist das Verhalten? Ich habe z. B. eine Variable% PATH% entweder im Benutzer- oder im globalen Bereich definiert und sehe nur den globalen Wert. Gibt es eine Möglichkeit, den Benutzer PATH an den globalen PATH anzuhängen ?
Fall 2:
Die im Benutzerabschnitt definierten Variablen werden im globalen Abschnitt nicht "aufgelöst" . Wenn ich den SET
Befehl verwende, wird eine Liste aller definierten Variablen ( Benutzer und global ) angezeigt, 'Querverweise' werden jedoch nicht aufgelöst.
Z.B
im benutzerbereich definiere ich:
VAR1=test-user
im globalen abschnitt definiere ich:
VAR2=%VAR1%-more;%VAR3%-more
VAR3=test-global
mit SET
sehe ich:
...
VAR1=test-user
VAR2=%VAR1%-more;test-global-more
VAR3=test-global
...
Ich verwende eine Windows 7 x64-Box.
Ausgehend von den obigen Tests sind meine Schlussfolgerungen:
- globale Variablen überschreiben Benutzervariablen (bei gleichem Namen ist nur global gültig)
- Es ist kein Querverweis zwischen Benutzer- und globalen Variablen zulässig
Habe ich recht?
quelle
Antworten:
Ihre Schlussfolgerungen stimmen zumindest nach meinen Tests nicht ganz.
Benutzervariablen können auf (globale) Systemvariablen verweisen.
Systemvariablen können nicht auf Benutzervariablen verweisen.
Benutzervariablen überschreiben die (globalen) Systemvariablen.
Nur in der Standardeinstellung werden
TEMP
(undTMP
) als Benutzervariable%USERPROFILE%\AppData\Local\Temp
und gleichzeitig als Systemvariable definiertC:\Windows\TEMP
.PATH
Dies scheint ein Sonderfall zu sein, bei dem die BenutzervariablePATH
(falls definiert) immer an die Systemvariable angehängt wird, anstatt sie zu überschreiben.quelle
PATH
(oderpath
) mit dem Wert erstelleC:\test
, speichere (drückeOK
), öffne eine neue Eingabeaufforderung und tippeecho %path%
,C:\test
erscheint am Ende.USER_PATH
hat für mich keine besondere Bedeutung. Ihr System kann sich aus irgendeinem Grund von meinem unterscheiden ... Könnte jemand es auf die eine oder andere Weise versuchen und bestätigen?