Я хочу змінити змінну 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 змінить, шлях більше не буде змінюватися разом із ним. Якщо це програма встановлення програмного забезпечення, це може зламати машини кінцевих користувачів. Не гарна ідея.