Como obter continuamente a atualização da variável de ambiente no arquivo de lote

2

Gostaria de acessar a variável de ambiente atualizada no segundo arquivo de lote, que está sendo alterado continuamente usando o primeiro arquivo de lote.

O e.var está mudando continuamente usando o primeiro arquivo de lote, mas estou recebendo apenas um valor atribuído à variável E. depois de iniciar o segundo arquivo de lote.

Por exemplo:

primeiro arquivo de lote:

:start   
setx ev=%random%
sleep 5s
goto start:

2º arquivo em lote:

:start    
echo %ev%
sleep 10s  
goto start:
    
por sathya 10.03.2013 / 14:37

2 respostas

5

Provavelmente, há algum mal-entendido em relação às variáveis de ambiente. Esses não são não compartilhados entre os processos em execução (pense em todo o caos que isso levaria), mas todos os processos são executados no ambiente próprio .

A alteração da variável de ambiente ev do processo A não terá efeito sobre a configuração ou alteração da variável de ambiente ev do processo B.

O novo ambiente para um processo inicial é criado por copiando o ambiente de seu "pai" - o processo que o iniciou. É por isso que você ainda vê o valor definido uma vez na variável de ambiente ev no processo A. Ele foi copiado para o ambiente do novo processo que está executando o segundo lote.

Enquanto a variável ev no ambiente de A mantém constantemente mudando a variável ev no ambiente de B manter-se-á constante.

    
por 10.03.2013 / 15:24
1

Esses arquivos de 2 .bat funcionam bem quando executados em duas janelas separadas de Prompt de Comando

1st.bat:

@echo off
:start
setx ev %random%
timeout /t 5 /nobreak >nul
goto start:

2nd.bat:

@echo off
:start
for /f "tokens=2*" %%A in ('REG QUERY "HKCU\Environment" /v ev ^|FIND "ev"') DO set ev=%%B
echo %ev%
timeout /t 10 /nobreak >nul
goto start:
    
por 10.03.2013 / 15:33

Tags