Czy istnieje sposób na wypchnięcie i usunięcie wszystkich zmiennych środowiskowych w skrypcie wsadowym? Na przykład chciałbym zrobić coś takiego:
pushEnvironmentVariables
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
popEnvironmentVariables
pushEnvironmentVariables
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
popEnvironmentVariables
batch
environment-variables
שטומי שטיין
źródło
źródło
PATH
- na przykład lub z jakiegoś powodu. Szczególnie interesuje mnie zmienna ścieżki push / pop. Czy jest coś, co przemawia przeciwko tworzeniu kopii zapasowych / przywracaniuPATH
?Trochę za późno na scenę, ale i tak idzie. Poniżej znajduje się implementacja struktury danych stosu w skryptach wsadowych Windows.
Funkcje:
Używam stosu w plikach wsadowych do śledzenia wywołań podprogramów. Każdy podprogram w moich plikach wsadowych zaczyna się od Call: Push% 0 , który wypycha nazwę bieżącego podprogramu na stos i kończy się Call: Pop .
Niektórzy mogą go znaleźć nadmierne zabić skryptów wsadowych, ale cieszył się tworząc go i mam nadzieję, że ktoś znajdzie to użyteczne, cieszyć .
Aby wypchnąć wszystkie zmienne środowiskowe, które możesz wywołać: PushAllEnvironmentVariables, aby przywrócić wszystkie zmienne środowiskowe, możesz wywołać: PopAllEnvironmentVariables
źródło
For /f "Tokens=* Delims=" %%a In ('Set') Do Call :Push "%%a"
Aby przywrócić wszystkie zmienne środowiskowe, których możesz użyć:For /l %%a In (!$Stack[0]!,-1,1) Do (Set !$Stack[%%a]!)
Zaktualizowałem odpowiedź, aby uwzględnić 2 podprogramy, które to implementują.