it-swarm.com.de

Wie füge ich die Windows-PATH-Variable mit setx hinzu? Seltsame Probleme haben

Ich möchte die Windows PATH-Variable mit setx ändern. Folgendes funktioniert mindestens 50% der Zeit unter Windows 8:

setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\

Wenn der Fehler "das Standardargument kann nur zweimal verwendet werden kann" ausgegeben wird, funktioniert das Folgende gelegentlich:

setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"

Der Unterschied ist, dass wir das zweite Argument in Anführungszeichen gesetzt haben. Ich glaube, die Anführungszeichen sind notwendig, wenn %PATH% um Leerzeichen erweitert wird.

Unter Windows 7 sind jedoch einige seltsame Probleme aufgetreten. Auf einem bestimmten Windows 7-Computer hatte ich dieses Problem:

echo %PATH%

Es druckt:

C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\

Dann mache ich das:

setx PATH "%PATH%;C:\Quux\"

Dann heißt es "Fehler: bei 1.024 Zeichen abgeschnitten". Nun schauen wir uns an, was PATH enthält:

echo %PATH%

Es druckt:

C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B

... und wird mit 1.024 Zeichen abgeschnitten. Es lief wegen der Duplikate über. Auch interessant: Der Wert von PATH ändert sich trotz der Tatsache, dass setx einen Fehler ausgelöst hat und nicht "Erfolg" sagte.

Ich konnte dieses seltsame Verhalten mehrmals wiederholen (glücklicherweise hatte ich den ursprünglichen Inhalt von PATH gespeichert).

Momentan ist der einzige todsichere Weg, den ich an PATH anhängen kann, der folgende:

  1. echo den PFAD.

  2. Kopieren Sie den Inhalt von PATH in eine Textdatei und fügen Sie ;C:\Python27\;C:\Python27\Scripts\ manuell am Ende von PATH hinzu.

  3. Kopieren Sie das Ganze aus der Textdatei.

  4. setx PATH "<paste the string here>"

Dieser Vorgang funktioniert jedes Mal unter Windows 7 und Windows 8.

Ich sollte das wirklich mit einem Befehl machen können. Was mache ich falsch?

Vielen Dank.

58
SerMetAla

Führen Sie als Administrator cmd aus und dann:

setx /M PATH "%PATH%;<your-new-path>"

Die Option/M legt die Variable im Gültigkeitsbereich von SYSTEM fest. Das Standardverhalten ist, es für den USER festzulegen.

TL; DR

Das Abschneidungsproblem tritt auf, weil beim Echo von% PATH% die Verkettung der Werte SYSTEM und USER angezeigt wird. Wenn Sie ihn also in Ihrem zweiten Argument zu setx hinzufügen, werden SYSTEM- und USER-Werte in die USER-Variable eingefügt. Wenn Sie das Echo wiederholen, werden die Dinge verdoppelt.

Darüber hinaus erfordert die Option/M Administratorrechte, daher müssen Sie Ihr Terminal mit "Als Administrator ausführen" öffnen. Andernfalls wird sich setx mit "Zugriff auf den Registrierungspfad wird verweigert" beschwert.

Das Letzte, was Sie beachten sollten: Der neue Wert wird nicht angezeigt, wenn Sie% PATH% gleich nach dem Einstellen auf diese Weise eingeben. Sie müssen cmd schließen und erneut öffnen.

Wenn Sie die tatsächlich in der Registrierung gespeicherten Werte überprüfen möchten, überprüfen Sie diese Frage .

63
Vituel

Das funktioniert perfekt:

for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set my_user_path=%B

setx PATH "C:\Python27;C:\Python27\Scripts;%my_user_path%"

Der erste Befehl ruft die USER-Umgebungsvariable 'PATH' in die Variable 'my_user_path' .__ ab. Die zweite Zeile steht vor 'C:\Python27; C:\Python27\Scripts;' auf die USER-Umgebungsvariable 'PATH'

Wenn Sie nicht setx verpflichtet sind, können Sie ein alternatives Befehlszeilentool wie pathed verwenden. Eine ausführlichere Liste alternativer PATH-Editoren finden Sie unter https://superuser.com/questions/297947/is-there-a-convenient-way-to-edit-path-in-windows-7/655712#655712

Sie können den Registrierungswert auch direkt bearbeiten. Dies ist die Funktion von setx. Mehr in dieser Antwort

Es ist komisch, dass Ihr %PATH% bei 1024 Zeichen abgeschnitten wird. Ich dachte, setx hätte dieses Problem nicht. Sie sollten jedoch wahrscheinlich die ungültigen Pfadeinträge bereinigen.

4

Ich hatte die gleichen Probleme und fand jetzt eine einfache Lösung.

Pathman verwenden.

pathman /as %M2%

Fügt zum Beispiel% M2% zum Systempfad hinzu. Nichts mehr und nicht weniger. Keine Probleme mehr, eine Mischung aus Benutzerpfad und Systempfad zu erhalten. Nicht mehr schwer, die richtigen Werte aus der Registry zu bekommen ...

Versucht bei Windows 10

3
Shivan

Ohne Administratorrechte funktionierte der einzige Weg für mich eine bat-Datei, die den folgenden Code enthält:

for /F "tokens=2* delims= " %%f IN ('reg query HKCU\Environment /v PATH ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx PATH "%USERPROFILE%\wev-tools;%OLD_SYSTEM_PATH%"

Der Code ist die Kombination der Antworten https://stackoverflow.com/a/45566845/4717152 und https://stackoverflow.com/a/10292113/4717152

2

Ich hatte solche Probleme bei der Verwaltung meiner Computerlabors, als sich die Umgebungsvariable% PATH% 1024 Zeichen näherte, und ich schrieb ein Powershell-Skript, um das Problem zu beheben.

Sie können den Code hier herunterladen: https://gallery.technet.Microsoft.com/scriptcenter/Edit-and-shorten-PATH-37ef3189

Sie können es auch als einfache Methode verwenden, um PATH-Einträge sicher hinzuzufügen, zu entfernen und zu analysieren. Genießen.

0
Carl Bennett

Schritte: 1. Öffnen Sie eine Eingabeaufforderung mit Administratorrechten.

Schritte: 2. Führen Sie den Befehl aus: setx/M PATH "Pfad\zu;% PATH%"

[Hinweis: Stellen Sie sicher, dass Sie den Befehl so ändern, dass Pfad\den Ordnerpfad von Ihrem Stammverzeichnis aus angibt.

Beispiel : setx/M PATH "C:\Programme;% PATH%"

0
Raj Tukadiya

Wenn jemand es in PowerShell ausführen möchte, funktioniert es wie folgt:

Führen Sie Powershell als Administrator aus 

Dann

setx /M PATH "$Env:PATH;<path to add>"

Um dies zu überprüfen, öffnen Sie eine andere Powershell und zeigen Sie PATH wie folgt an:

$Env:PATH
0
NIK