A variável de ambiente definida no lote não é expandida no atalho

1

Como posso tornar minha variável de ambiente (definida em arquivo de lote) visível no aplicativo executado logo após configurar este envvar?

Este é o cenário que uso:

  1. No meu script externo (não muito importante aqui) eu crio os atalhos do Windows para arquivos jpg, com o alvo parecido com:

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

    % MYPHOTODRIVE% deve conter apenas uma letra de unidade atual.

  2. Eu inicio o IrfanView usando o seguinte script BAT (o script está localizado no mesmo diretório que todos os arquivos .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%"
    

O problema é que nem a imagem única nem uma apresentação de slides (para a segunda chamada ao IrfanView) são executadas corretamente.

Esta variável "MYPHOTODRIVE" não deveria ser expandida para um valor adequado na execução de Irfan? Não obtém o mesmo ambiente que o script pai?

    
por schedar 06.02.2012 / 01:58

1 resposta

0

O problema é que você não está passando uma variável de ambiente para o IrfanView, por exemplo:

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

Você está passando um arquivo .LNK (que é binário). O IrfanView não sabe como interpretar arquivos de atalho; só lida com arquivos gráficos e tal.

Sua melhor aposta é solicitar que Irfan adicione a capacidade de resolver arquivos de atalho (ele é bastante responsivo e bom em lidar com questões de suporte e solicitações de recursos).

    
por 06.02.2012 / 02:04