Windows बैच फ़ाइलों में चर क्यों अनलोड करें


13

क्या Windows बैच फ़ाइलों में उपयोग किए गए चरों को उतारना आवश्यक या अच्छा अभ्यास माना जाता है?
निम्नलिखित कोड में उदाहरण के लिए, क्या set myFolder=अंत में आवश्यक है?

@echo off
set myFolder="C:\Temp\Batchfiles"
echo %myFolder%

set myFolder=

मैंने इसे कई स्थानों पर ऑनलाइन देखा है, निश्चित रूप से जब बैच फ़ाइल समाप्त होती है तो चर स्वचालित रूप से अनलोड हो जाते हैं?

जवाबों:


33

SETवैश्विक पर्यावरण चर सेट करेगा। यह आपकी पटकथा के निष्पादन के बाद बनी रहेगी।

आइए एक उदाहरण देखें।
सबसे पहले, मैं यह सुनिश्चित करने के लिए चर को साफ करता हूं कि यह मौजूद नहीं है।

C:\Users\Oliver\Desktop>set TEST=

एक त्वरित परीक्षण:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

आइए उस बैच फ़ाइल बनाएँ और इसे निष्पादित करें:

C:\Users\Oliver\Desktop>echo set TEST=something>test.bat
C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>set TEST=something

आइए मेरी .batफ़ाइल के निष्पादन के बाद TEST का मान देखें :

C:\Users\Oliver\Desktop>echo %TEST%
something

तो, हाँ, स्क्रिप्ट के अंत में चर को साफ करना अच्छा अभ्यास है।


इससे भी बेहतर होगा कि आप पूरी समस्या का इस्तेमाल करें SETLOCALऔर उससे ENDLOCALबचें।

यहां, मैंने एक नई .batफ़ाइल बनाई है जो उपयोग करती है SETLOCALऔर ENDLOCAL:

C:\Users\Oliver\Desktop>type test.bat
setlocal
set TEST=something
endlocal

आइए स्पष्ट करें TESTऔर यह प्रतिध्वनित करें कि हम साफ-सुथरी शुरुआत करना चाहते हैं:

C:\Users\Oliver\Desktop>set TEST=
C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

महान, अब चलो नया चलाते हैं .bat:

C:\Users\Oliver\Desktop>test.bat
C:\Users\Oliver\Desktop>setlocal
C:\Users\Oliver\Desktop>set TEST=something    
C:\Users\Oliver\Desktop>endlocal

अब TESTभी खाली रहेगा:

C:\Users\Oliver\Desktop>echo %TEST%
%TEST%

2
+! स्पष्टीकरण के लिए
Raystafarian 12

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