Переменная среды, заданная в пакете, не раскрывается в ярлыке

969
schedar

Как я могу сделать мою переменную окружения (установленную в пакетном файле) видимой в приложении, которое выполняется сразу после установки этого envvar?

Вот сценарий, который я использую:

  1. В моем внешнем скрипте (не очень важном здесь) я создаю ярлыки Windows для файлов jpg с целью, похожей на:

    %MYPHOTOSDRIVE%:\private\photos\photo001.jpg 

    % MYPHOTODRIVE% должен содержать только текущую букву диска.

  2. Я запускаю 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
** (1) ** Посмотрите в диалоговом окне «Свойства» для ярлыков изображения. У них все еще есть `% MYPHOTOSDRIVE%`? Если эта переменная не установлена ​​глобально (для всех Windows, а не только для одного экземпляра консоли), то Explorer не использует ее. ** (2) ** Попробуйте добавить строку после `set`, например` echo %% MYPHOTOSDRIVE %% `, чтобы убедиться, что это правильно. ** (3) ** Я не думаю, что IrfanView может сделать ярлык; это не разрешится автоматически. Synetech 12 лет назад 0
* 1 Да, на всех ярлыках картинок вместо буквы диска есть% MYPHOTOSDRIVE%. * 2 Зав. переменная установлена ​​правильно, когда я проверяю это таким образом. * 3 Я надеялся, что он будет работать так же, как и при вызове другого пакетного скрипта из первого. В этом случае эта переменная будет расширена до правильного значения ... schedar 12 лет назад 0

1 ответ на вопрос

0
Synetech

Проблема в том, что вы не передаете переменную окружения в IrfanView, например:

C:\> i_view32.exe %%myphotosdrive%%:\private\photos\photo001.jpg 

Вы передаете ему .LNKфайл (который является двоичным). IrfanView не знает, как интерпретировать файлы ярлыков; он обрабатывает только графические файлы и тому подобное.

Лучше всего попросить Ирфана добавить возможность разрешать файлы ярлыков (он достаточно отзывчив и хорош в обработке вопросов поддержки и запросов функций).

Ты прав. Я создал запрос здесь: http://irfanview-forum.de/showthread.php?8865-Expansion-of-environment-variables-during-runtime schedar 12 лет назад 0