Ich möchte die Windows PATH-Variable mit ändern setx
. Folgendes funktioniert unter Windows 8 mindestens 50% der Zeit:
setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
Wenn der Fehler "Das Standardargument kann nur zweimal verwendet werden" angezeigt wird, funktioniert das Folgende manchmal:
setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
Der Unterschied besteht darin, dass wir das zweite Argument in Anführungszeichen gesetzt haben. Ich glaube, die Anführungszeichen sind notwendig, wenn %PATH%
sie um Leerzeichen erweitert werden.
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." Lassen Sie uns nun überprüfen, was PATH enthält:
echo %PATH%
Es druckt:
C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
... und es ist bei 1.024 Zeichen abgeschnitten. Es lief wegen der Duplikate über. Ebenfalls interessant: Der Wert von PATH ändert sich trotz der Tatsache, dass setx
ein Fehler aufgetreten ist und nicht "Erfolg" gesagt wurde.
Ich konnte dieses seltsame Verhalten mehrmals wiederholen (zum Glück hatte ich den ursprünglichen Inhalt von PATH gespeichert).
Im Moment ist der einzige todsichere Weg, den PATH anzuhängen, der folgende:
echo
der Weg.Kopieren Sie den Inhalt von PATH in eine Textdatei und fügen Sie ihn manuell
;C:\Python27\;C:\Python27\Scripts\
am Ende des PATH hinzu.Kopieren Sie das Ganze aus der Textdatei.
setx PATH "<paste the string here>"
Dieser Vorgang funktioniert jedes Mal unter Windows 7 und Windows 8.
Ich sollte das wirklich in einem Befehl tun können. Was mache ich falsch?
Vielen Dank.
setx
ist aus einem anderen Grund gefährlich: Wenn der Pfad Umgebungsvariablen enthält, z. B. geht%JAVADIR%\bin
die Referenz verloren, dh wenn sich JAVADIR ändert, ändert sich der Pfad nicht mehr mit. Wenn es sich um ein Software-Installationsprogramm handelt, können die Computer der Endbenutzer beschädigt werden. Keine gute Idee.