Пакетные файлы Windows - интерполяция переменных среды в исполняемый вызов - PullRequest
3 голосов
/ 28 ноября 2011

Извинения, если я пропустил эту проблему в другом потоке, но я не смог ее найти (здесь или где-либо еще в Интернете).

В Windows (XP) у меня есть следующая глобальная переменная среды, котораяЯ установил, щелкнув правой кнопкой мыши Мой компьютер , затем выбрав Свойства> Дополнительно> Переменные среды :

CUSTOM_HOME = c:\some\folder\path

Как мне интерполировать это в выполнение в пакетефайл?Мне нужно «добавить» subfolder\program.exe к этому пути, чтобы я получил c:\some\folder\path\subfolder\program.exe в командном файле.Я пытаюсь что-то вроде

%CUSTOM_HOME%\subfolder\program.exe

, но когда я запускаю командный файл, вывод просто показывает

> \subfolder\program.exe
> The system cannot find the path specified.

Какой правильный синтаксис, поэтому полный путь к .exe будет правильно?

Ответы [ 3 ]

5 голосов
/ 28 ноября 2011

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

Если он не найден, это означает, что глобальная переменная env либо с ошибкой, либо недоступна.Вы можете проверить это в командной строке с помощью SET CUSTOM_HOME.

4 голосов
/ 28 ноября 2011

Проблема здесь в пробелах, кроме знака равенства. В пакетной команде SET имя переменной является полной строкой перед знаком равенства (включая пробелы), а значением переменной является полная строка после знака равенства (включая знаки равенства).

Эта команда:

SET CUSTOM_HOME = c:\some\folder\path

присвойте переменной "CUSTOM_HOME" значение "c: \ some \ folder \ path". Вы можете проверить это так:

ECHO %CUSTOM_HOME %

Просто удалите пробелы, кроме знака равенства ...

0 голосов
/ 28 ноября 2011

Ваш синтаксис правильный.Я думаю, что вы открыли командную строку и установили переменные среды.Теперь вы можете выполнять командный файл в той же командной строке.

В связи с этим он может не работать.

Попробуйте закрыть существующую командную строку и запустить ее.

...