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:
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.
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.LNK
arquivo (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).