nomes de variáveis entre arquivos de lote chamados

2

Digamos que eu tenha dois arquivos em lote, foo.bat e bar.bat , que estão localizados assim:

root\foo.bat
root\grub\bar.bat

Digamos também que ambos os arquivos contêm uma linha que define uma variável, assim:

set PWD=%cd%

Agora, se foo.bat chamar .\grub\bar.bat , bar.bat substituirá a variável PWD definida em foo.bat ?

    
por Jim Fell 03.02.2012 / 17:48

2 respostas

1

Eu fiz uma experiência. Alterar a variável de ambiente em bar.bat faz com que ela mude em foo.bat . Suponho que isso seja esperado, pois as variáveis de ambiente definidas usando o comando set (não setx ) têm escopo para a sessão de comando.

    
por 03.02.2012 / 18:16
1

o escopo é global / a variável é compartilhada como você diz ... para que você também o faça eco.

também, se você usar o setx, ele funcionará para a próxima sessão do cmd e para os futuros, porque está no registro., mas o set e o setx não devem ser comparados na discussão do escopo. variáveis de ambiente são geralmente globais. Mas você pode usar setlocal em um arquivo de lote no início e as variáveis definidas lá permanecem locais

C:\DOCUME~1\bob>type n.bat <ENTER>
setlocal
set a=99

C:\DOCUME~1\bob>echo %a% <ENTER>
%a%

C:\DOCUME~1\bob>n <ENTER>

C:\DOCUME~1\bob>setlocal

C:\DOCUME~1\bob>set a=99

C:\DOCUME~1\bob>echo %a% <ENTER>
%a%

C:\DOCUME~1\bob>
    
por 03.02.2012 / 23:54