Use setlocal, consulte setlocal /?
ou ss64.com/nt/setlocal
Setlocal
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
Endlocal
Setlocal
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
Endlocal
Para salvar o estado atual da variável, você pode fazer
set >MyVarStatus.txt
e restaurar mais tarde com
@Echo off
For /f "tokens=1* delims==" %%A in (
'findstr /V "^Path" MYVarStatus.txt '
) Do Set %%A=%%B
isso excluiria as variáveis do caminho.