Я хочу змінити змінну 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
викликало помилку і не говорило "Успіх".
Мені вдалося повторити цю дивну поведінку кілька разів (на щастя, я врятував оригінальний вміст PATH).
На даний момент єдиним надійним способом, який я знаю, щоб додати до PATH, є наступний:
echo
Шлях.Скопіюйте вміст PATH у текстовий файл та додайте вручну
;C:\Python27\;C:\Python27\Scripts\
його в кінець .Скопіюйте все це з текстового файлу.
setx PATH "<paste the string here>"
Цей процес працює кожного разу як на Windows 7, так і на Windows 8.
Я справді мав би це зробити за одну команду. Що я роблю не так?
Дякую.
setx
небезпечно з іншої причини: якщо шлях містить будь-які змінні середовища, наприклад,%JAVADIR%\bin
посилання буде втрачено, тобто, якщо JAVADIR змінить, шлях більше не буде змінюватися разом із ним. Якщо це програма встановлення програмного забезпечення, це може зламати машини кінцевих користувачів. Не гарна ідея.