SETустановит глобальную переменную среды. Он сохранится после выполнения вашего скрипта.
Давайте посмотрим на пример.
Сначала я очищаю переменную, чтобы убедиться, что она не существует.
C:\Users\Oliver\Desktop>set TEST=
Быстрый тест:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Давайте создадим этот пакетный файл и выполним его:
C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something
Давайте посмотрим значение TEST после выполнения моего .batфайла:
C:\Users\Oliver\Desktop>echo %TEST%
something
Так что да, очистка переменной в конце скрипта - это хорошая практика.
Еще лучше было бы использовать SETLOCALи ENDLOCALизбежать всей проблемы.
Здесь я создал новый .batфайл, который использует SETLOCALи ENDLOCAL:
C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal
Давайте очистим TESTи повторим это, чтобы убедиться, что мы начнем чистить:
C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Отлично, теперь давайте запустим новое .bat:
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something
C:\Users\Oliver\Desktop>endlocal
Теперь TESTвсе равно будет пусто:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%