कहते हैं कि मैं CMD शेल में निम्नलिखित कार्य करता हूं:
set FOO=bar
क्या सीएमडी शेल को रिसाइकल करने के अलावा इस वैरिएबल को अपरिभाषित करने का कोई तरीका है?
कहते हैं कि मैं CMD शेल में निम्नलिखित कार्य करता हूं:
set FOO=bar
क्या सीएमडी शेल को रिसाइकल करने के अलावा इस वैरिएबल को अपरिभाषित करने का कोई तरीका है?
set var=
उत्तर MS-DOS 6.22 के तहत काम करता है, जैसा कि यह विंडोज़ cm3.exe के तहत करता है। (हालांकि, विंडोज के विपरीत, दोहरे उद्धरण चिह्नों वर के आसपास डाल = काम नहीं करता, बजाय यह एक वातावरण चर जिसका नाम एक दोहरे उद्धरण के साथ शुरू होता पैदा करता है।)
जवाबों:
हां, आप इससे परेशान हो सकते हैं
set FOO=
या स्पष्ट रूप से उपयोग कर रहा है:
set "FOO="
सुनिश्चित करें कि =
निशान के बाद कोई अनुगामी (अदृश्य) वर्ण न आए । अर्थात्:
set FOO=
से अलग है set FOO=
।यह मेरे विंडोज 7 CMD शेल में मेरे लिए काम करता है:
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
कमान में रिक्त स्थान महत्वपूर्ण हैं । यदि आप कोशिश करते हैं set FOO = bar
और फिर कोशिश करते हैं set FOO=
, तो यह 'FOO' को परेशान नहीं करेगा। किसी कारण के लिए, हालांकि, वे (जैसे?) महत्वपूर्ण अंदर नहीं हैं % %
।
मैं केवल एक टिप्पणी के रूप में निम्नलिखित की पेशकश करूंगा, लेकिन मुझे लगता है कि यह महत्वपूर्ण है कि यह अपने आप खड़ा हो।
पिछले जवाबों में से एक ने उल्लेख किया है कि किसी को रिक्त स्थान से सावधान रहने की आवश्यकता है; और यह सुनिश्चित करने के लिए कि यह सच है। हालाँकि मैंने पाया है कि कभी-कभी ट्रेलिंग स्पेस बस वहाँ जाना चाहते हैं, कोई फर्क नहीं पड़ता कि क्या - विशेष रूप से अगर आप कमांड लाइन वन-लाइनर कर रहे हैं और कमांड सेपरेटर के रूप में स्पेस की आवश्यकता है।
यह उस समस्या का हल है:
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
इस तरह से दोहरे उद्धरण चिह्नों में लपेटकर, रिक्ति के मुद्दे को पूरी तरह से टाला जा सकता है। यह वास्तव में भी उपयोगी हो सकता है जब चर को बीच में रिक्त स्थान को खत्म करने के लिए बनाया जाता है - उदाहरण के लिए - पथ, उदाहरण के लिए:
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
) ??