3

Я использую следующее для создания и редактирования переменных среды для Windows 7.

Control Panel\All Control Panel Items\System -> Advanced system settings -> Environment Variables

Под System variables меня есть следующие подходящие переменные:


PROG32=C:\Program Files (x86)
REALDWG_SDK_DIR=%PROG32%\Autodesk\RealDWG 2011
Path=%REALDWG_SDK_DIR%;%PROG32%\Haskell\bin

Однако происходит следующее:


C:\>echo %PROG32%
C:\Program Files (x86)

C:\>echo %Path%
%REALDWG_SDK_DIR%;C:\Program Files (x86)\Haskell\bin

Можно ли расширить цепочку переменных?

Если я переименую Path в что-то другое, у меня иногда возникает проблема, а иногда нет.

2 ответа2

6

Изменить: После экспериментов с этим немного больше, реальная проблема, кажется, связана с именами переменных - возможно, какая-то ошибка в синтаксическом анализаторе, которая расширяет вложенные переменные. Похоже, что вложенная переменная, которую вы добавляете, должна находиться перед переменной верхнего уровня, если они были отсортированы по алфавиту.

Например, изменение REALDWG_SDK_DIR на OEALDWG_SDK_DIR будет работать, как и BEALDWG_SDK_DIR, но PEALDWG_SDK_DIR не будет, как и ZEALDWG_SDK_DIR. Альтернативно, переименование PATH в SATH будет работать, но RATH - нет.

Таким образом, решение вашей проблемы состоит в том, чтобы использовать что-то, начинающееся с буквы перед буквой P, или же вручную введите первую часть пути.


Начальный (неправильный) ответ:

То, что вы делаете, должно работать. Убедитесь, что у вас нет опечатки в одном из имен переменных где-то по пути - это единственная причина, по которой я могу подумать, это заставит его просто напечатать имя без расширения. Кроме того, вам нужно будет открыть новую командную строку после применения изменений.

1

Интересно, может ли это быть связано с этим дефектом в Базе знаний Microsoft:

http://support.microsoft.com/kb/329308

Я столкнулся с той же проблемой с переменными окружения в некоторых системах XP (не только% APPDATA%, как в статье в КБ). Использование различных методов для установки переменных среды, включая оба, упомянутых в статье базы знаний, не помогло ... ни setx (инструмент Windows Resource Kit).

Однако точно такие же методы работали на других системах. Это очень расстраивает - кажется, что единственное решение, которое я нашел, это использование явных путей, а не ссылок на переменные окружения (что отстой, но работает).

Например,

MYVAR=C:\something
PATH=C:\something\bin

скорее, чем:

MYVAR=C:\something
PATH=%MYVAR%\bin

РЕДАКТИРОВАТЬ: В последнее время я просто использовал mklink (http://technet.microsoft.com/en-us/library/cc753194.aspx) для создания соединений (в основном символические ссылки), а не суетиться с переменными среды и их волнистость. Например, вместо MYVAR в качестве env var, я просто создаю c:\myvar - он может указывать на E:\some\really\long\and\hard\to\remember\let\alone\type\path или что-то еще пожелает. mklink является непротиворечивым, может быть создан через командную строку, и они сохраняются между перезагрузками. Например:

mklink /j c:\myvar c:\something
mklink /j c:\myvar E:\some\really\long\and\hard\to\remember\let\alone\type\path

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .