SETestablecerá una variable de entorno global. Persistirá después de la ejecución de su script.
Echemos un vistazo a un ejemplo.
Primero, borro la variable para asegurarme de que no existe.
C:\Users\Oliver\Desktop>set TEST=
Una prueba rápida:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Vamos a crear ese archivo por lotes y ejecutarlo:
C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something
Veamos el valor de TEST después de la ejecución de mi .batarchivo:
C:\Users\Oliver\Desktop>echo %TEST%
something
Entonces, sí, borrar la variable al final del script es una buena práctica.
Aún mejor sería usar SETLOCALy ENDLOCALevitar todo el problema.
Aquí, creé un nuevo .batarchivo que usa SETLOCALy ENDLOCAL:
C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal
Vamos a borrarlo TESTy repetirlo para asegurarnos de que comencemos limpio:
C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Genial, ahora vamos a ejecutar el nuevo .bat:
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something
C:\Users\Oliver\Desktop>endlocal
Ahora TESTtodavía estará vacío:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%