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

Was ist der Unterschied zwischen SETX und SET?

Nach meinem Verständnis:
Beide werden zum Festlegen von Umgebungsvariablen verwendet
SETX ist für Benutzervariablen.
SET ist für shell-Variablen.

Author: Martin Prikryl, 2015-05-19

3 answers

Ich fürchte, es ist nicht ganz so einfach. Umgebungsvariablen sind nicht, wie Sie vorschlagen, durch den Gültigkeitsbereich begrenzt, 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 Shells aus, die ausgeführt werden, und sobald Sie die Shell schließen, geht der neue Wert verloren, bis Sie führen Sie set erneut.

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

Siehe hier für ein Beispiel: http://batcheero.blogspot.com/2008/02/set-and-setx.html

 111
Author: Frank Thomas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-06-06 06:35:54

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

SET: Erstellen oder aktualisieren Sie 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: Erstellen oder aktualisieren Sie 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.

geben Sie hier die Bildbeschreibung ein

 15
Author: Premraj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-08-25 00:22:06

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

Um eine Systemumgebungsvariable anstelle einer Benutzerumgebungsvariablen festzulegen, müssen wir nur die Option /m im Befehl setx verwenden und sie über eine erhöhte(Administrator -) Eingabeaufforderung ausführen.

setx variable value /m

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

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

Erklärung: Der obige Befehl wird angehängt "C:\Users\User\Libs" zur bereits vorhandenen Pfadvariablen (Systemumgebung Variabel).

Ohne das Argument / m wird nur eine Pfadvariable auf Benutzerebene geändert oder erstellt.

Aus dem setx Benutzerhandbuch,

/M Gibt an, dass die variable in der das System breit (HKEY_LOCAL_MACHINE) Umgebung. Der standardwert ist zu setzen die variable unter dem HKEY_CURRENT_USER Umgebung.

 9
Author: Renju Jose,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-04-25 10:14:43