Ich muss Umgebungsvariablen auf verschiedenen Windows-Computern festlegen, möchte aber nicht die Mühe machen, sie manuell zu ändern, indem ich auf den Eigenschaftenbildschirm von "Arbeitsplatz" gehe.
Ich möchte es über die Befehlszeile mit einer Batch-Datei tun. Soweit ich weiß, ändert die Verwendung von set nur die Variable für die Prozesse, die ich im Befehlsfenster aufrufe.
Ich möchte es definitiv festlegen. Wenn später ein neuer Prozess ausgeführt wird, werden die von mir festgelegten neuen Einstellungen verwendet. Gibt es eine Möglichkeit, dies über die Befehlszeile zu tun?
Antworten:
Verwenden Sie den Befehl SETX (beachten Sie das Suffix 'x'), um Variablen festzulegen , die nach dem Schließen des cmd-Fensters bestehen bleiben.
So legen Sie beispielsweise eine env var "foo" mit dem Wert "bar" fest:
Es lohnt sich jedoch, die 'Notizen' zu lesen, die angezeigt werden, wenn Sie die Verwendung (
setx /?
) drucken , insbesondere:In PowerShell den Befehl [Environment] :: SetEnvironmentVariable .
quelle
[Environment]::SetEnvironmentVariable('PATH', "Whatever you need it to be", "Machine")
finden msdn.microsoft.com/en-us/library/96xafkes(v=vs.110).aspxIn der MSDN-Dokumentation für Umgebungsvariablen erfahren Sie, was zu tun ist:
Dazu benötigen Sie natürlich Administratorrechte. Ich kenne keine Möglichkeit, eine Windows-Nachricht aus dem Windows-Stapel zu senden, daher müssen Sie dazu ein kleines Programm schreiben.
quelle
setx
unten?quelle
setx
(und ohne Installationsmöglichkeit). Einfache Verwendung (in meinem Fall):wsh.Environment("user").Item("myVar") = "my value"
In der Tat funktioniert SET TEST_VARIABLE = value nur für den aktuellen Prozess und
SETX
ist daher erforderlich. Ein kurzes Beispiel für das dauerhafte Speichern einer Umgebungsvariablen auf Benutzerebene.SETX TEST_VARIABLE etc
. Noch nicht angewendet (echo %TEST_VARIABLE%
zeigt%TEST_VARIABLE%
,echo %TEST_VARIABLE%
zeigtetc
.etc
.quelle
quelle