Listen Sie alle Umgebungsvariablen über die Befehlszeile auf

932

Ist es möglich, alle Umgebungsvariablen an einer Windows-Eingabeaufforderung aufzulisten?

Etwas, das dem von PowerShell gci env:(oder ls env:oder dir env:) entspricht.

Nicola Cossu
quelle
1
Kann jemand eine PowerShell-Lösung freigeben? Es soll die Zukunft und alles sein. Recht?
Bruno Bronosky
1
@ BrunoBronosky die PS-Lösung ist in der Frage enthalten, und es gibt auch eine Antwort, die es wiederholt =)
Jon
Eine Beschreibung der einzelnen finden Sie unter ss64.com/nt/syntax-variables.html
Samuel Harmer

Antworten:

1352

Mach einfach:

SET

Sie können auch SET prefixalle Variablen anzeigen, deren Namen mit beginnen prefix.

Wenn Sie beispielsweise nur derbydb aus den Umgebungsvariablen lesen möchten, gehen Sie wie folgt vor:

set derby 

... und Sie erhalten Folgendes:

DERBY_HOME=c:\Users\amro-a\Desktop\db-derby-10.10.1.1-bin\db-derby-10.10.1.1-bin
Jon
quelle
7
Das fordert mich zur Eingabe eines Namens auf?
CMCDragonkai
53
@ KevinMeredith: Bei allen Befehlen in der Windows-Shell wird die Groß- und Kleinschreibung nicht berücksichtigt.
Jon
12
@CMCDragonkai benutzt du Powershell? Es scheint, dass es mit einem seiner Befehle vermischt wurde. Dies ist eine der weniger nützlichen Funktionen! Ich fragte eine Frage zu diesem deaktivieren hier
JonnyRaa
3
Kann jemand dies aktualisieren, um eine PowerShell-Lösung einzuschließen? Es soll die Zukunft und alles sein. Recht?
Bruno Bronosky
3
@NickTimmer Da Sie mit Bash anstelle der Windows-Shell sprechen, ist dies die falsche Frage / Antwort für Sie. Schau dir an printenv.
Jon
167

Jon hat die richtige Antwort, aber um etwas mehr mit etwas syntaktischem Zucker zu tun zu haben.

SET | more

Mit dieser Option können Sie die Variablen seitenweise und nicht das gesamte Los oder anzeigen

SET > output.txt

sendet die Ausgabe an eine Datei output.txt, die Sie im Editor oder was auch immer öffnen können ...

Fetchez la vache
quelle
7
Ich hatte keine Ahnung, dass morees unter Windows existiert, +1
ardnew
Es ist tatsächlich auch in einige Funktionen integriert. Dir zum Beispiel wird mit einem / p Seite.
John Lord
@ardnew: Jetzt weißt du mehr ;-)
user2943111
107

So listen Sie alle Umgebungsvariablen in PowerShell auf:

Get-ChildItem Env:

Oder wie von user797717 vorgeschlagen, um das Abschneiden der Ausgabe zu vermeiden:

Get-ChildItem Env: | Format-Table -Wrap -AutoSize

Quelle: Erstellen und Ändern von Umgebungsvariablen ( Windows PowerShell-Tipp der Woche )

user52028778
quelle
4
Auch wenn ich PowerShell nicht verwende, weil es nicht für jeden cmd-Befehl funktioniert, ist dies die einzige Lösung für einen hübschen Druck (auf 2 Spalten) ohne großen Aufwand. Um das gleiche Verhalten in cmd zu erreichen, benötigen Sie so etwas, for /f "tokens=1,2 delims==" ...was sehr kompliziert wird ...
ROMANIA_engineer
6
Um zu vermeiden, dass die Ausgabe abgeschnitten wird, würde ich Folgendes verwenden:Get-ChildItem Env: | Format-Table -Wrap -AutoSize
user797717
1
gci env:stattdessen Get-ChildItem Env:leichter zu merken
Watson Kepson
Perfekt! Ich verstehe nicht, warum dies nicht die beste Antwort ist, um ehrlich zu sein: / EDIT: Oh, warte, ich verstehe, warum ... die ursprüngliche Frage war nicht, wie man es in Powershell macht, sondern in der alten Schule Eingabeaufforderung: D
Yoeri Van Nieuwerburg
79

Einfach weglaufen setvon cmd.

Zeigt Umgebungsvariablen an, legt sie fest oder entfernt sie. Set wird ohne Parameter verwendet und zeigt die aktuellen Umgebungseinstellungen an.

Grant Thomas
quelle
11

Sie können SETin cmd verwenden

Es SETreicht gerade aus , die aktuelle Variable anzuzeigen

Verwenden Sie, um bestimmte Variablen wie 'PATH' anzuzeigen SET PATH.

Um Hilfe zu erhalten, geben Sie ein set /?.

Boyce Field
quelle
2
Wie unterscheidet sich das von bestehenden Antworten?
Peter Mortensen
7

Verliere keine Zeit. Suchen Sie danach in der Registrierung:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"

Gibt weniger als den SET-Befehl zurück.

Paweł Piwowar
quelle
2
Obwohl dies möglicherweise zutrifft, besteht ein Unterschied darin, dass die Registrierungsabfrage nicht erweiterte REG_EXPAND_SZSchlüssel zurückgibt . reg query "HKCU\Environment"Zeigt mir zum Beispiel , dass meine %TEMP%Variable vom Wert von abhängt. %USERPROFILE%Wenn sich dieser Wert ändert, ändert sich auch der Wert für %TEMP%. Im Gegensatz dazu SETkehrt gerade zurück"C:\Users\mpag\AppData\Local\Temp"
mpag
1
Warum sagst du "keine Zeit verlieren"? Ist das Schreiben von "set" in der Eingabeaufforderung nicht schneller als das Schreiben von "reg query ..."?
Alexandre Huat
4

Wenn Sie die gerade festgelegte Umgebungsvariable anzeigen möchten, müssen Sie ein neues Befehlsfenster öffnen.

Mit setx-Variablen festgelegte Variablen sind nur in zukünftigen Befehlsfenstern verfügbar, nicht im aktuellen Befehlsfenster. ( Setx, Beispiele )

Kapitän Puget
quelle
4

Wie in anderen Antworten erwähnt, können Sie setalle Umgebungsvariablen auflisten oder verwenden

set [environment_variable] um eine bestimmte Variable mit ihrem Wert zu erhalten.

set [environment_variable]= kann verwendet werden, um eine Variable aus dem Arbeitsbereich zu entfernen.

Abhishek Gurjar
quelle
1
Ja, aber wie beantwortet dies die Frage?
Peter Mortensen