SETimposterà una variabile d'ambiente globale. Persisterà dopo l'esecuzione del tuo script.
Diamo un'occhiata a un esempio.
Innanzitutto, deseleziono la variabile per assicurarmi che non esista.
C:\Users\Oliver\Desktop>set TEST=
Un rapido test:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Creiamo quel file batch ed eseguirlo:
C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something
Vediamo il valore di TEST dopo l'esecuzione del mio .batfile:
C:\Users\Oliver\Desktop>echo %TEST%
something
Quindi sì, cancellare la variabile alla fine dello script è una buona pratica.
Ancora meglio sarebbe usare SETLOCALed ENDLOCALevitare l'intero problema.
Qui, ho creato un nuovo .batfile che utilizza SETLOCALe ENDLOCAL:
C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal
Cancella TESTe riecheggiamo per assicurarci di iniziare in modo pulito:
C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Bene, ora eseguiamo il nuovo .bat:
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something
C:\Users\Oliver\Desktop>endlocal
Ora TESTsarà ancora vuoto:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%