Apakah ada cara untuk mendorong dan menghapus semua variabel lingkungan dalam skrip batch? Misalnya saya ingin melakukan sesuatu seperti ini:
pushEnvironmentVariables
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
popEnvironmentVariables
pushEnvironmentVariables
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
popEnvironmentVariables
batch
environment-variables
שלומי שטיין
sumber
sumber
PATH
- hanya untuk contoh atau karena alasan tertentu. Saya terutama tertarik pada variabel push / pop path. Apakah ada yang mendukung backup / restorePATH
?Agak terlambat ke tempat kejadian tapi begini saja. Di bawah ini adalah implementasi dari struktur data stack dalam skrip batch Windows.
Fitur:
Saya menggunakan tumpukan di file batch saya untuk melacak panggilan subrutin. Setiap subrutin dalam file kumpulan saya dimulai dengan Panggilan: Tekan% 0 , yang mendorong nama subrutin saat ini ke tumpukan dan diakhiri dengan Panggilan: Pop .
Beberapa orang mungkin menganggapnya sebagai over-kill untuk skrip batch tetapi saya senang membuatnya dan saya berharap seseorang akan menemukan ini berguna, selamat menikmati .
Jadi, untuk mendorong semua variabel lingkungan yang dapat Anda panggil: PushAllEnvironmentVariables, untuk mengembalikan semua variabel lingkungan, Anda dapat memanggil: PopAllEnvironmentVariables
sumber
For /f "Tokens=* Delims=" %%a In ('Set') Do Call :Push "%%a"
Untuk mengembalikan semua variabel lingkungan yang dapat Anda gunakan:For /l %%a In (!$Stack[0]!,-1,1) Do (Set !$Stack[%%a]!)
Saya telah memperbarui jawaban untuk menyertakan 2 subrutin yang mengimplementasikan ini.