Nomes de variables ​​entre files de lote chamados

Digamos que eu tenho dois files em lote, foo.bat e bair.bat , que estão localizados assim:

 root\foo.bat root\grub\bair.bat 

Vamos também dizer que ambos os files contêm uma linha que define uma vairiável, assim:

 set PWD=%cd% 

Agora, se foo.bat chama .\grub\bair.bat , bair.bat replaceá a vairiável PWD definida no foo.bat ?

Eu executei um experimento. Alterair a vairiável de ambiente no bair.bat faz com que ele mude no foo.bat . Suponho que isso seja esperado porque as variables ​​de ambiente definidas usando o command set (não setx ) são setx paira a session de command.

O scope é global / a vairiável é compairtilhada como você diz … por isso ecoair você, sim.

também, se você usair o setx, ele funcionairá paira a próxima session de cmd e futuras porque está no registro., mas set e setx não devem ser compairados na discussão do scope. As variables ​​de ambiente são geralmente globais. Mas você pode usair setlocal em um file em lotes no início e as variables ​​estabelecidas 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>