Windows-Umgebungsvariablen über die Eingabeaufforderung festlegen und abrufen?

220

Ich möchte eine Umgebungsvariable über die Eingabeaufforderung festlegen und dann global darauf zugreifen können (zum Beispiel sollte dies unter System -> Umgebungsvariablen angezeigt werden).

Wenn ich den Befehl set verwende, kann ich in einer neuen cmd-Sitzung nicht darauf zugreifen.

set NEWVAR=SOMETHING
echo %NEWVAR%

Verwandte Fragen:

Shane
quelle
1
setx variable value - starte dann die Eingabeaufforderung neu
Andrew

Antworten:

252

Um die Umgebungsvariable global zugänglich zu machen, müssen Sie sie in der Registrierung festlegen. Wie Sie festgestellt haben, indem Sie nur Folgendes verwenden:

setze NEWVAR = ETWAS

Sie setzen es einfach in den aktuellen Prozessraum.

Nach dieser Seite können Sie den setxBefehl verwenden:

setx NEWVAR ETWAS

setxist in Windows 7 integriert, steht jedoch für ältere Versionen möglicherweise nur zur Verfügung, wenn Sie das Windows Resource Kit installieren

ChrisF
quelle
4
Beachten Sie, dass Sie ein Kontingent angeben müssen, zum Beispiel: setx JAVA_HOME "C:\Program Files\Java\jdk1.7.0_45"wird funktionieren. Aber setx JAVA_HOME C:\Program Files\Java\jdk1.7.0_45wird Ihnen Syntaxfehler geben
MD. Mohiuddin Ahmed
5
@ MD.MohiuddinAhmed Das liegt daran, dass der Pfad Leerzeichen enthält.
ChrisF
36

Wir können auch "setx var variable / M" verwenden, um die Variable auf die Systemumgebungsvariablenebene anstatt auf die Benutzerebene zu setzen.

Hinweis: Dieser Befehl sollte als Administrator ausgeführt werden.

Minh Chau
quelle
10
setx program "C:\Program Files" /M

/ M für das Festlegen der Systemumgebungsvariablenebene anstelle der Benutzerebene wie @Minh Chau answer

Prüfung Bildbeschreibung hier eingeben

RESTART- Befehlszeile (Wenn Sie die Befehlszeile nicht neu starten, funktioniert die Umgebungsvariable nicht)

Bildbeschreibung hier eingeben

Phan Van Linh
quelle
Dies dupliziert eine andere Antwort und fügt keinen neuen Inhalt hinzu. Bitte posten Sie keine Antwort, es sei denn, Sie haben tatsächlich etwas Neues beizutragen.
DavidPostill
8
@DavidPostill meine Antwort ist neu, wir müssen die Kommandozeile neu starten. Ich denke, es ist wichtig
Phan Van Linh
2

Sie können setx env var [/M]wie oben erwähnt verwenden. Wenn dies nicht wirksam ist, können Sie refreshenvUmgebungsvariablen mit aktualisieren. Sie müssen dazu weder Ihren Computer noch explorer.exe oder Ihre Eingabeaufforderung neu starten.

Bearbeiten: anscheinend wird Refreshenv nicht mit Windows mitgeliefert. Hier ist die Quelle: https://pastebin.com/1fJqA0pT
Speichern Sie es als RefreshEnv.cmd und platzieren Sie es in einem Ordner, der in Ihren PATH-Umgebungsvariablen enthalten ist

DFSFOT
quelle
1
+1 für die Erwähnung von 'refreshenv' - das hätte ich noch nie erlebt!
Francis Norton
1

Systemvariablen können über CMD und Registry gesetzt werden. Reg-Abfrage "HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment" / v PATH

Alle häufig verwendeten CMD-Codes und Systemvariablen sind hier aufgeführt: Festlegen von Windows-Systemumgebungsvariablen mithilfe von CMD .

Öffnen Sie CMD und geben Sie Set ein

Sie erhalten alle Werte der Systemvariablen.

Geben Sie set java ein , um die Pfaddetails von Java zu erfahren, die auf Ihrem Windows-Betriebssystem installiert sind.

Himanshu Singh
quelle
Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage.
DavidPostill
Es ist jedoch nah. Verwenden von REG ADD kann dies erreichen?
TOOGAM
0

Ich möchte hinzufügen, dass, wenn Sie den Parameter / s mit setx verwenden, um Umgebungsvariablen auf einem Remotecomputer festzulegen, der Dienst "Remoteregistrierung" auf dem Zielcomputer ausgeführt werden muss, andernfalls wird ein "FEHLER:" angezeigt angegebene Operation konnte nicht abgeschlossen werden. "

(Ich habe Microsoft gebeten, den TechNet-Artikel auf setx zu aktualisieren , um diese Informationen aufzunehmen.)

Tim Bailen
quelle