Назад | Перейти на главную страницу

Переменная PATH и кавычки (окна)

У меня странная проблема с переменной PATH под окнами:

Мое приложение находится в папке c: \ app \ bin, а библиотеки DLL для этого приложения находятся в папке c: \ app \ runtime. Чтобы запустить мою программу, я изменяю переменную PATH с помощью файла * .bat, обычно с помощью следующего скрипта:

set PATH="c:\app\bin";"c:\app\runtime";%PATH%

Это приведет к появлению исполняемых файлов и библиотек DLL на пути. Однако в одной из моих систем Windows Server 2008 R2 это не работает. Это означает, что если я выполню указанную выше команду в командном окне, я могу запустить exe-файл из c: \ app \ bin, но приложение сразу же пожалуется, что не может найти требуемые файлы dll («Программа не запускается, потому что .... dll отсутствует на вашем компьютере ... "). Эти файлы dll должны находиться в c: \ app \ runtime.

Я немного поэкспериментировал и выяснил, что есть три обходных пути:

  1. Измените переменную PATH навсегда с помощью диалогового окна System Properties.
  2. Опустите кавычки в приведенной выше команде для пути к файлам DLL, например устанавливать PATH="c:\app\bin";c:\app\runtime;%PATH%
  3. Копирование файлов DLL в каталог, где находится exe

Странная часть решения 2 заключается в том, что оно ничего не меняет, если я добавлю кавычки к первому пути или если я изменю порядок путей.

Кто-нибудь знает, почему мой оригинальный сценарий не работает? Мне нужно запустить его, потому что он создается программой автоматически, и я не могу изменить приложение, которое генерирует файл bat.

В PATH переменная обычно не содержит кавычек; в качестве разделителя используются точки с запятой. Например, вот мой системный PATH определение, которое включает папки с пробелами:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Windows Performance Toolkit\

Кажется, что Windows может выполнять программы с путями в кавычках, но процедура поиска DLL не справляется с ними.

В идеале вы должны использовать:

set PATH=c:\app\bin;c:\app\runtime;%PATH%

Другим обходным решением может быть запуск программы из c:\app\runtime, например:

cd /d C:\app\runtime
..\bin\app.exe

Это может даже не потребовать изменения PATH переменная.

Это происходит, когда вы вставляете значение пути, состоящее из ДВУХ или более путей, разделенных ДВОЙНОЙ точкой, вместо того, чтобы вставлять их в диалоговое окно по одному. Я была такая же проблема.

Ваши решения:

  1. Удалите значение пути, разделенное КОЛОНАМИ, и вставьте их в текстовый редактор, затем вставьте каждое значение пути отдельно. ИЛИ
  2. Нажмите кнопку ИЗМЕНИТЬ ТЕКСТ ... и удалите кавычки за пределами строки. Затем в диалоговом окне переменных среды каждое значение переместится на новую строку.

Нажмите OK, затем перезапустите редактор терминала, чтобы загрузить новые значения.

Надеюсь, это поможет!