Как сделать переменную окружения (установленную в пакетном файле) видимой в приложении, запущенном сразу после установки этой переменной окружения?
Вот сценарий, который я использую:
В моем внешнем скрипте (здесь это не так важно) я создаю ярлыки Windows для файлов jpg, при этом цель выглядит так:
%MYPHOTOSDRIVE%:\private\photos\photo001.jpg
%MYPHOTODRIVE% должен содержать только текущую букву диска.
Я запускаю IrfanView с помощью следующего BAT-скрипта (скрипт находится в том же каталоге, что и все .lnk-файлы):
set MYPHOTOSDRIVE=%cd:~0,2% "c:\Program Files\IrfanView\i_view32.exe" "i:\private\photolinks\photo001.lnk" "c:\Program Files\IrfanView\i_view32.exe" /slideshow="%cd%"
Проблема в том, что ни отдельное изображение, ни слайд-шоу (для второго вызова IrfanView) не выполняются должным образом.
Не следует ли расширить эту переменную "MYPHOTODRIVE" до надлежащего значения при выполнении Irfan? Разве она не получает ту же среду, что и родительский скрипт?
решение1
Проблема в том, что вы не передаете переменную окружения в IrfanView, например:
C:\> i_view32.exe %%myphotosdrive%%:\private\photos\photo001.jpg
Вы передаете это.LNK
файл (который является двоичным). IrfanView не умеет интерпретировать файлы ярлыков; он обрабатывает только графические файлы и т. п.
Ваш лучший выбор —запросчтобы Ирфан добавил возможность разрешения файлов ярлыков (он довольно отзывчив и хорошо справляется с вопросами поддержки и запросами функций).