Ich suche nach einer bequemen Möglichkeit, eine Umgebungsvariable in der Befehlszeile hinzuzufügen und / oder zu ändern und / oder zu löschen. Insbesondere finde ich mich manchmal in Situationen wieder, in denen ich einige Variablen in cmd.exe hinzufügen muss.
Ich wäre dankbar, wenn mir jemand eine nicht-GUI-Methode zeigen würde, um die %PATH%
Variable zu ändern (dh ein neues Verzeichnis hinzuzufügen) .
Die Änderung sollte dauerhaft sein, nicht nur für die Dauer der cmd
Sitzung.
command-line
environment-variables
René Nyffenegger
quelle
quelle
Antworten:
Die Old-School-Methode zur direkten Manipulation von Registrierungsvariablen mit dem Befehl reg stand auf dem Spiel. So machst du es:
Wirf das in ein einzeiliges Skript namens apath.bat, das so aussieht:
Dann müssen Sie nur noch den Pfad des neuen Verzeichnisses angeben, das Sie beim Aufrufen des Skripts hinzugefügt haben, und Sie werden angewählt:
zB: apath.bat% addonpath%
Obwohl Hinch recht hat. Wenn Sie mit Vista oder höher arbeiten, verwenden Sie am besten den Befehl SETX, mit dem wir Umgebungsvariablen weitergeben können, ohne das Risiko einzugehen, die Registrierung mit dem Befehl reg direkt zu manipulieren, mit dem Sie Ihren Computer retten könnten, wenn Sie bearbeiten die ENV-Variablen so weit, dass Sie sie sofort verwenden können.
quelle
Sie könnten setx verwenden.
Benutzervariable:
Systemvariable:
quelle
echo %PATH%
, sehen Sie, wie sie miteinander kombiniert werden<system path>;<user path>
. Der erste Befehl erzwingt daher, dass aktuelle Elemente des Systempfads im Benutzerpfad angezeigt werden (was nicht so schlimm ist), während der zweite Befehl bewirkt, dass aktuelle Elemente des Benutzerpfads im Systempfad angezeigt werden (was nicht akzeptabel ist).Sie können den
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun
Registrierungsschlüssel verwenden, um auf eine Batchdatei zu verweisen, damit Sie semipermanente Änderungen vornehmen können, ohne sich mit den geheimen Einstellungsdialogen zu befassen.quelle
Wenn Sie die GUI nicht verwenden möchten (wie in Systemsteuerung, System, Erweitert, Umgebungsvariablen, PFAD), können Sie diese wahrscheinlich verwenden,
REG
um sie festzulegenHKCU\Environment\PATH
.%PATH%
REG ADD HKCU\Environment /v PATH /t REG\_EXPAND\_SZ /d "%PATH%" /f
Das
/f
Überschreiben des vorhandenen Werts wird erzwungen, sodass Sie die Frage nicht interaktiv beantworten müssen.Bearbeiten:
%PATH%
muss in Anführungszeichen gesetzt werden.Bearbeiten: Es ist auch erwähnenswert, dass dies wahrscheinlich einen Neustart oder eine erneute Anmeldung erfordert, bevor es wirksam wird. Während des Änderns wird es in der GUI sofort wirksam (für neue
cmd.exe
Sessions).Referenz: http://support.microsoft.com/kb/104011
Wie in der Referenz erwähnt, können Sie WM_SETTINGCHANGE senden, wenn Sie Code schreiben möchten, und dies sollte die Anmelde- / Abmeldeanforderung umgehen.
quelle
REG QUERY HKCU\Environment /v PATH
.Es ist einfach, den Pfad im aktuellen Prozess cmd.exe zu ändern:
Sie können jederzeit HELP PATH ausführen, um Hilfe zum Befehl PATH zu erhalten.
quelle
Für wirklich dauerhafte, systemweite Änderungen möchten Sie unbedingt die Systemsteuerung verwenden (auch bekannt als Arbeitsplatz -> Eigenschaften -> Erweitert -> Umgebungsvariablen für WinXP). Die Einstellungen dort wirken sich auf Ihr gesamtes System aus, einschließlich der GUI-Programme in der Explorer-Shell.
Wenn Sie diese Änderungen nur in der
cmd.exe
Shell benötigen , können Sie eine Batchdatei ausführen, die sie beim Starten eines cmd.exe-Fensters festlegt. In der Antwort von Phoshi wird das erwähntHKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun
, was eine ausgezeichnete Option zu sein scheint - es ist einfach, kleine Änderungen an der Kommandozeile vorzunehmen und sie bei Bedarf erneut auszuführen. Dies hat jedoch keine Auswirkungen auf GUI-Fenster oder die Explorer-Shell.Tatsächlich wundert es mich, dass Sysinternals kein geeignetes Dienstprogramm hat, um dies zu tun. Vielleicht kann es ein anderer PStool tun?
quelle
Viele Möglichkeiten, dies zu tun. REG ADD ist eins oder REG IMPORT (unter Verwendung einer exportierten .REG-Datei von einem anderen Computer). SETX / M ist eine andere. Sie können es auch mithilfe der Gruppenrichtlinieneinstellungen veröffentlichen (der einfachste Weg für eine große Anzahl von Computern).
quelle
Ein anderer hier nicht erwähnter Gedanke ist das Erstellen eines Autohotkey-Skripts, mit dem das Control Panel gestartet und für Sie aufgerufen wird. Es funktioniert gut, wenn Sie bereits AHK-Benutzer sind :-)
https://autohotkey.com/board/topic/63210-modify-system-path-gui/
Was ist auch mit der Bearbeitung von hklm / system / currentcontrolset001 / control / session manager / environment: path key? Derselbe Schlüssel befindet sich jedoch unter hklm / system / currentcontrolset002 und hklm / system / currentcontrolset. Es scheint, dass dies hier richtig sein könnte: /programming/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install
quelle