क्या कमांड प्रॉम्प्ट में '&' वर्ण के लिए कोई एस्केप है?


11

मैं कुछ इस तरह की कोशिश कर रहा हूँ:

set pwd = abc&123
echo password %pwd%

मुझे इसका परिणाम मिलता है ...

'123' is not recognized as an internal or external command, operable program or batch file. 
password abc

क्या इस तरह की व्यवस्था या ऐसे पात्रों के लिए एक पलायन है?


जवाबों:


9

आपको अपने पासवर्ड को दोहरे उद्धरण चिह्नों में लपेटने की आवश्यकता है जैसे:

set pwd="abc&123"
echo %pwd%

मुझे बताएं कि यह कैसे जाता है।


1
एक अन्य विकल्प जो कुछ परिदृश्यों में बेहतर हो सकता है, वह हैset "pwd=abc&123"
हैरी जॉनसन

1
-1 यह चौंकाने वाला है कि इसमें 5 उतार चढ़ाव आए हैं, यह गलत है। विंडोज% var% या var का उपयोग करता है! आप इसे इतनी आसानी से स्वयं का परीक्षण कर सकते हैं। $ var linux में है, अगर आप windows में $ var को प्रतिध्वनित करते हैं तो यह शाब्दिक रूप से $ var कहता है
barlop

1
@barlop: यह देखते हुए कि यह दूसरी पंक्ति है जो प्रश्न को संबोधित करती है, मुझे नहीं लगता कि यह मायने रखता है।
हैरी जॉन्सटन

7

मैंने पाया कि यह मार्टिन्यू के उत्तर और मास्टशैके के उत्तर दोनों के संयोजन के साथ सबसे अच्छा काम करता है।

set pwd=abc^&123
echo %pwd%

अभी भी विफल रहता है, और

set pwd="abc&123"
echo %pwd%

इसे उद्धरण जोड़ता है (आप forलूप या स्ट्रिंग जोड़-तोड़ के साथ उद्धरण नहीं निकाल सकते क्योंकि यह फिर से विफल होगा, एम्परसैंड के लिए धन्यवाद), जो कि महान नहीं है।

तथापि,

set "pwd=abc^&123"
echo %pwd%

अच्छी तरह से काम।

उम्मीद है की वो मदद करदे।


+1। ज्ञात हो कि यह कैरेट को पर्यावरण चर में छोड़ देता है, अर्थात, यह सेट करता pwdहै abc^&123। ज्यादातर समय यह संभवतः वही है जो आपको करने की आवश्यकता है, लेकिन यह आपको बाहर निकाल सकता है यदि आपको पता नहीं है कि क्या हो रहा है।
हैरी जॉनसन

@HarryJohnston मुझे आपकी वर्तनी की त्रुटि ठीक करनी चाहिए। यह कैरेट है। btw मुझे पता है कि ntcmds.chm इसका उल्लेख करता है, लेकिन cmd में कहां /? प्रलेखन यह उल्लेख है कि कैरेट से बच चरित्र है?
बार्लोप

@ बरलोप: तो यह है; मैं इसे नाम के साथ भ्रमित कर रहा था। एक सामान्य नियम के रूप में /?केवल एक सारांश प्रदान करता है, व्यापक प्रलेखन नहीं।
हैरी जॉनसन

@barlop,? कैरेट पलायन चरित्र है।
पचेरियर

@Pacerier हाँ, कैरेट पलायन चरित्र है, कोई भी इससे असहमत नहीं है। और यह उल्लेख किया गया है कि यह ntcmds.chm (ntcmds.chm XP के साथ आया है और एक समान ऑनलाइन microsoft.com/resources/documentation/windows/xp/all/prodetocs// में एस्केप कैरेक्टर है। ऑनलाइन अप टू डेट - शायद अधिक कमांड)। मैं बस पूछ रहा था कि कहां /? (यदि कहीं भी), तो यह कहता है कि कैरट बच चरित्र है
बार्लोप

7

कमांड-लाइन संदर्भ मदद फ़ाइल से:

एम्परसेंड (और), पाइप (!), और कोष्ठक () विशेष वर्ण हैं जो भागने के चरित्र (^) या उद्धरण चिह्नों से पहले होने चाहिए जब आप उन्हें तर्क के रूप में पास करते हैं।

पूरे पासवर्ड को उद्धरण चिह्नों में रखने की तरह लगता है कि व्यक्तिगत पात्रों से बचना आसान होगा यदि इसके भीतर दो से अधिक वर्ण हैं जिन्हें उपचार की आवश्यकता है।


और उद्धरण के भीतर उद्धरण?
पचेरियर

4

आपको वास्तव में क्या चाहिए:

set pwd=abc^^^&123
echo %pwd%

या:

set "pwd=abc^&123"
echo %pwd%

स्पष्टीकरण:

चूंकि &एक विशेष चर है, इसलिए आपको इसके साथ बचना चाहिए ^, जिसके परिणामस्वरूप ^&

रनिंग set pwd=abc^&123वैरिएबल को वैल्यू पर सेट करेगा abc&123। उसके बाद, यदि आप दौड़ रहे थे, तो आप echo %pwd%प्रभावी रूप से दौड़ रहे हैं echo abc&123

फिर भी echo abc&123आप उम्मीद के मुताबिक काम नहीं करते, क्योंकि &एक विशेष चर है। आप उद्धरण जोड़कर इससे बच सकते हैं: echo "abc&123"लेकिन आपके आउटपुट में उद्धरण चार्ट भी होंगे। दूसरे शब्दों में, उद्धरणों का उपयोग करना उचित समाधान नहीं है।

&जब आप echoकमांड चलाते हैं, तो आपको बचने की क्या आवश्यकता है :

echo abc^&123

इसलिए चर को मान सम्‍मिलित करना होगा abc^&123। वैरिएबल को मान पर सेट करने के लिए abc^&123, आपको विशेष वर्णों से बचने की आवश्यकता होगी ^और &, जिसके परिणामस्वरूप:

set pwd=abc^^^&123

+1 कैरेट से बचने की आवश्यकता को इंगित करने के लिए
jmcg

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