Я хочу изменить переменную Windows PATH с помощью setx
. Следующие действия работают не менее 50% времени в Windows 8:
setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
Если он дает ошибку "аргумент по умолчанию может использоваться только 2 раза", то следующее работает некоторое время:
setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
Разница в том, что мы завернули второй аргумент в кавычки. Я считаю, что цитаты необходимы, когда %PATH%
расширяется, чтобы включить пробелы.
Однако я столкнулся с некоторыми странными проблемами в Windows 7. На одной из машин Windows 7 у меня была эта проблема:
echo %PATH%
Он печатает:
C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
Затем я делаю это:
setx PATH "%PATH%;C:\Quux\"
Затем он говорит: "Ошибка: усечено на 1024 байта". Теперь давайте посмотрим, что содержит PATH:
echo %PATH%
Он печатает:
C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
... и обрезается на 1024 байта. Это произошло из-за дубликатов. Также интересно: значение PATH изменяется, несмотря на то, что setx
поднял ошибку и не сказал "Success".
Я смог повторить это странное поведение несколько раз (к счастью, я сохранил исходное содержимое PATH).
В настоящий момент единственным надежным способом, который я знаю для добавления в PATH, является следующее:
-
echo
PATH. -
Скопируйте содержимое PATH в текстовый файл и вручную добавьте
;C:\Python27\;C:\Python27\Scripts\
в конец PATH. -
Скопируйте все это из текстового файла.
-
setx PATH "<paste the string here>"
Этот процесс работает каждый раз как на Windows 7, так и на Windows 8.
Я действительно должен был бы сделать это в одной команде. Что я делаю неправильно?
Спасибо.