SETlegt eine globale Umgebungsvariable fest. Es bleibt auch nach der Ausführung Ihres Skripts bestehen.
Schauen wir uns ein Beispiel an.
Zuerst lösche ich die Variable, um sicherzustellen, dass sie nicht existiert.
C:\Users\Oliver\Desktop>set TEST=
Ein kurzer Test:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Lassen Sie uns diese Batch-Datei erstellen und ausführen:
C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something
Lassen Sie uns den Wert von TEST nach der Ausführung meiner .batDatei sehen:
C:\Users\Oliver\Desktop>echo %TEST%
something
Also, ja, das Löschen der Variablen am Ende des Skripts ist eine gute Praxis.
Noch besser wäre es, das ganze Problem zu nutzen SETLOCALund ENDLOCALzu vermeiden.
Hier habe ich eine neue .batDatei, die Verwendungen SETLOCALund ENDLOCAL:
C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal
Machen TESTwir es klar und wiederholen es, um sicherzustellen, dass wir sauber anfangen:
C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%
Großartig, jetzt lass uns das Neue starten .bat:
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something
C:\Users\Oliver\Desktop>endlocal
Jetzt TESTwird noch leer sein:
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%