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

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

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

Aqui está o cenário que eu uso:

  1. No meu script externo (não muito importante aqui), crio atalhos do Windows para arquivos jpg, com o destino 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 a 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 do Irfan? Não obtém o mesmo ambiente do script pai?

Responder1

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 por isso.LNKarquivo (que é binário). O IrfanView não sabe interpretar arquivos de atalho; ele apenas lida com arquivos gráficos e coisas assim.

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

informação relacionada