Was ist der Unterschied zwischen SETX und SET in Umgebungsvariablen in Windows

63

Was ist der Unterschied zwischen SETXund SET?

Nach meinem Verständnis:
Beide werden zum Festlegen von Umgebungsvariablen
SETXfür Benutzervariablen verwendet.
SETist für Shell-Variablen.

Premraj
quelle
3
Versuchen Sie SET /?und SETX /?- das sollte Ihnen einige Ideen geben.
Iszi
2
Siehe auch SS64-Referenzen für SET und SETX . SS64 ist eine großartige Befehlsreferenz für mehrere Sprachen und Befehlsumgebungen - ich finde es besonders praktisch für CMD & PowerShell.
Iszi

Antworten:

83

Es ist leider nicht ganz so einfach. Umgebungsvariablen sind, wie Sie vermuten, nicht durch den Gültigkeitsbereich beschränkt, aber Sie haben Recht, dass die Lebensdauer des Werts in der Variablen beim Vergleich der Verben unterschiedlich ist.

SetÄndert die Umgebungswerte der aktuellen Shell (des Fensters), und die Änderung ist sofort verfügbar, aber nur vorübergehend. Die Änderung wirkt sich nicht auf andere ausgeführte Shells aus. Sobald Sie die Shell schließen, geht der neue Wert verloren, bis Sie set erneut ausführen.

setxÄndert den Wert dauerhaft, was sich auf alle zukünftigen Shells auswirkt, jedoch nicht auf die Umgebung der bereits ausgeführten Shells. Sie müssen die Shell beenden und erneut öffnen, bevor die Änderung verfügbar ist. Der Wert wird jedoch so lange geändert, bis Sie ihn erneut ändern.

Ein Beispiel finden Sie hier: http://batcheero.blogspot.com/2008/02/set-and-setx.html

Frank Thomas
quelle
13
das ist sehr gut geschrieben, aber ich würde hinzufügen, dass setx die registrierung ändert
barlop
Es ist eigentlich noch weniger einfach als hier beschrieben. Es gibt "flüchtige" Umgebungsvariablen, auf die man achten muss. Unter bestimmten Umständen unterscheidet sich die Liste der vom Befehl SET angezeigten Variablen, je nachdem, ob der Benutzer eine Eingabeaufforderung mit erhöhten Rechten aufgerufen hat oder nicht.
Kreemoweet
10

Tatsächlich können wir die Variable auf drei Bereiche einstellen:
1. Shell
2. Benutzer
3. System (Maschine) oder Global

SET: Erstellt oder aktualisiert den aktuellen Shell-Bereich für temporäre.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX: Erstellt oder aktualisiert die aktuellen Benutzerumgebungsvariablen für permanent.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

In GUI-Benutzer- und Systemumgebungsvariablen.

Bildbeschreibung hier eingeben

Premraj
quelle
3

Hinzufügen eines Punktes, der von anderen Antwortenden verpasst wurde.

Um eine Systemumgebungsvariable anstelle einer Benutzerumgebungsvariablen festzulegen, müssen Sie nur die Option / m im Befehl setx verwenden und an einer Eingabeaufforderung mit erhöhten Rechten (Administratorrechten) ausführen.

setx variable value /m

Beispiel: Öffnen Sie die Eingabeaufforderung als Administrator und führen Sie sie aus

setx Path "%Path%;C:\Users\User\Libs" /m

Erläuterung: Mit dem obigen Befehl wird "C: \ Users \ User \ Libs" an die bereits vorhandene Pfadvariable (Systemumgebungsvariable) angehängt.

Ohne das Argument / m werden nur Änderungen an der Pfadvariablen auf Benutzerebene vorgenommen oder diese erstellt.

Aus dem setx-Benutzerhandbuch,

/ M Gibt an, dass die Variable in der systemweiten Umgebung (HKEY_LOCAL_MACHINE) festgelegt werden soll. Standardmäßig wird die Variable in der Umgebung HKEY_CURRENT_USER festgelegt.

Renju Jose
quelle