Существует определенная проблема с расширением переменных среды внутри переменной PATH, когда переменная раскрывается в путь, содержащий пробелы.
Мы создали наши собственные переменные системного уровня, такие как «OUR_ROOT = c:\MyRoot», а затем использовали их в системном PATH, например «PATH =;% OUR_ROOT%\bin;» и это правильно раскрывается в "PATH =; c:\MyRoot\bin;". Пока проблем нет.
Но в Windows 7 (32-разрядная версия) я сам установил продукт и создал системные переменные среды, например:
STUDIO_BIN=C:\program files\Company Name\Product Name 10.4\bin
и он добавил его в системную переменную PATH:
PATH=<other path elements>;%STUDIO_BIN%;<more path elements>
Но значения PATH, показанные в CMD, содержали «% STUDIO_BIN%;» а не расширенный путь. Значение в «Мой компьютер»> «Свойства»> «Дополнительно»> «Env.Vars» также не изменилось. Это означало, что я не мог запускать программы, которым требовалась DLL в этом каталоге.
Просто изменив STUDIO_BIN (через Мой компьютер> Свойства> Дополнительно ...> Env Vars) на имя без встроенных пробелов:
STUDIO_BIN=C:\ProductName\bin
и затем перезапуская окно CMD, PATH теперь:
PATH=<other path elements>;C:\ProductName\bin;<more path elements>
Другое решение состоит в том, чтобы в достаточной степени отредактировать системную переменную, которую вы используете в PATH, с помощью диалогового окна «Мой компьютер»> «Свойства»> «Дополнительно»> «Переменные среды».
Я попытался добавить символ и удалить его, чтобы внести «изменения», а затем «ОК» вышел, запустил новое приглашение CMD, и PATH НЕ был правильно расширен.
Затем я попытался удалить часть пути, чтобы это было
STUDIO_BIN=C:\Program Files\Company Name
(опуская "Название продукта 10.4") и вот, и следующее приглашение CMD показало PATH с правильно расширенным STUDIO_BIN!
Как ни странно, если я вернулся и добавил «Имя продукта 10.4» в STUDIO_BIN (включая все пробелы, которые были изначально там до того, как я начал работать с ним), и PATH все равно был правильно расширен.
Очевидно, что при достаточном изменении содержимого переменная PATH подвергается некоторой дополнительной обработке в диалоговом окне «Переменные среды», которая позволяет ему работать. Обработка не выполняется, когда переменная была добавлена установщиком продукта (который, вероятно, просто изменил PATH в реестре напрямую).
Я почти уверен, что это была проблема и с XP. Он только что появился у меня в Windows 7, когда я собирал новую машину для разработки. Видимо, это не было исправлено Microsoft.
Очевидно, что даже переменные, определенные в MS, такие как% ProgramFiles%, не будут правильно расширяться в переменной PATH.
Эта страница дает возможный ответ, если вы устанавливаете PATH через командную строку или командный файл. (Заключите всю команду после SET в кавычки.) Я не знаю, какой установщик использовал продукт, который я установил, чтобы установить переменные среды, но он, очевидно, обходился без какой-либо обработки, необходимой для правильного расширения путей пробелами.
Итак, подведем итог: вы можете:
изменить пути (и переместить все связанные файлы) на пути без пробелов, или
отредактируйте переменные, которые не могут быть расширены, в диалоговом окне «Переменные среды» (изменив их достаточно для правильной обработки - я не уверен, насколько этого достаточно).