Quando você tenta definir e usar uma variável, você deve sempre estar atento ao seu escopo .
Variáveis de ambiente que você define usando o comando set
são válidas somente dentro do escopo do processo no qual elas estão definidas. É fácil provar com um experimento:
- Abra um prompt de comando e tente definir
set a = b
. Useset
para verificar se está adequadamente definido. - Agora, abra um segundo prompt de comando e invoque
set
. Você vê quea
não está definido neste escopo.
storvar.exe
é um processo separado. Por isso, tem seu próprio escopo. Seja qual for a variável de ambiente que você definir, ela permanecerá ali e será excluída quando sair.
Então, existe uma alternativa? Bem, sim. Eu mesmo uso o PowerShell em vez dos arquivos em lote obsoletos; ele pode extrair material do arquivo e usá-lo imediatamente ou emiti-lo para o próximo script. (A Microsoft oficialmente suporta a compilação do PowerShell para EXE, embora você também possa encontrar os orientados para iniciantes na Galeria do TechNet.) AutoIt é outra alternativa.