मैं विंडोज़ शेल सत्र से सभी पर्यावरण चर कैसे साफ़ करूं?


12

यदि मैं एक नया विंडोज शेल सत्र शुरू करता हूं और टाइप करता हूं:

env

मुझे बहुत सारे पर्यावरण चर दिखाई देते हैं। मैं वर्तमान शेल सत्र से सभी पर्यावरण चर को हटाकर कमांड लाइन प्रोग्राम के रनिंग को डीबग करना चाहता हूं ।

हालांकि मैं निम्नलिखित दृष्टिकोण के साथ एक-एक करके जा सकता हूं:

SET FOO=
SET BAR=
SET ... ... ...

हालाँकि इन सभी को एक बार में साफ करने का एक सरल तरीका है?


1
क्या है env? मैंने पहले कभी नहीं सुना है, और यह यहाँ काम नहीं करता है।
विरोधाभास

जवाबों:


14

आप इसे बैच फ़ाइल में लिख सकते हैं:

@echo off
if exist ".\backupenv.bat" del ".\backupenv.bat"
for /f "tokens=1* delims==" %%a in ('set') do (
echo set %%a=%%b>> .\backupenv.bat
set %%a=
)

यह मूल रूप से प्रत्येक पर्यावरण चर के माध्यम से चलता है, उन्हें एक बैच फ़ाइल ( backupenv.bat) तक बैक करता है और फिर प्रत्येक चर को साफ करता है। उन्हें पुनर्स्थापित करने के लिए आप backupenv.batफ़ाइल चला सकते हैं ।


यह भी खूब रही। धन्यवाद! एक छोटी सी बात: backupenv.bat फ़ाइल में हर SET A = B लाइन के अंत में 2 अनुगामी स्थान होते हैं। यह बहाल करने पर कुछ चर को पेंच लगता है।
15

%% a = %% b के बाद का स्थान हटा दिया गया, संपादित उत्तर देखें। अब ठीक होना चाहिए।
गफ्फ

कि दो स्थानों में से एक से छुटकारा मिल गया ... प्रत्येक एसईटी लाइन के अंत में एक स्थान रहता है। जो अजीब है।
टिआज

शायद अंतरिक्ष तब जोड़ा गया था जब आपने पहले मेरी (थोड़ी टूटी हुई) स्क्रिप्ट को चलाया था, और आपने बैच को पुनर्स्थापित करने के लिए चलाया ... इस प्रकार प्रत्येक चर में एक स्थान जोड़ दिया गया? फिर आपने इसे फिर से चलाया और आउटपुट में इसके दो स्थान होंगे? यदि यह स्थिति है, तो पहले से ही आपके सभी चर को एक स्थान के साथ प्रत्यय करने के लिए क्षमा करें। हालांकि साफ करना आसान होना चाहिए।
गफ

नाह - मैं हर बार एक नया खोल खोल रहा था। इसे आज़माएं ... क्या आप एक अतिरिक्त स्थान के साथ समाप्त नहीं होते हैं?
टियाज

6

यदि आप बैच फ़ाइल के लिए केवल सभी पर्यावरण चर को खाली करना चाहते हैं, तो यह और भी आसान हो जाता है।

@echo off
Setlocal enabledelayedexpansion
Set >set

For /F "tokens=1* delims==" %%i in (set) do set %% %i=
Del set
Set

अंतिम पंक्ति सभी पर्यावरण चर को आउटपुट करती है, जो कि कोई भी नहीं होना चाहिए, जो कोड के काम करने की पुष्टि करता है।

क्योंकि Setlocalउपयोग किया जाता है, बैच समाप्त होने के बाद सभी पर्यावरण परिवर्तन खो जाते हैं। इसलिए यदि आप Setबैच के बाद टाइप करते हैं, तो आप देखेंगे कि सभी पर्यावरण चर अभी भी हैं इसलिए इसे बैकअप फ़ाइल में संग्रहीत करने की आवश्यकता नहीं है।


कृपया कोड स्वरूपण का उपयोग करने के लिए कुछ प्रयास करें। यह चीजों को बहुत अधिक पठनीय बनाता है।
बॉक्सस्पा

स्वीकृत उत्तर इस से बेहतर है क्योंकि अन्य उत्तर में मौजूदा बैकअप के लिए एक रास्ता है
SeanClt

@SeanClt आपको मेरी पूरी टिप्पणी पढ़ने की आवश्यकता है। यह कहता है कि इस मामले में बैकअप की आवश्यकता नहीं है।
आरोन लोवे

@ स्क्रिप्‍टरो मैं वर्तमान में पदों को प्रारूपित करने में असमर्थ हूं, क्षमा करें
आरोन लोवे

हां, आप सही हैं
सीन क्लैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.