2012-05-11 24 views
304

में एक चर का घोषणापत्र और उपयोग करना मैं अपनी बैच फ़ाइल में एक चर घोषित करने और उपयोग करने का प्रयास कर रहा हूं। ऐसा लगता है कि यह आसान होना चाहिए।विंडोज बैच फ़ाइल (बीएटी)

@ECHO OFF 

SET location = "bob" 
ECHO We're working with "%location%" 

उत्पादन मैं मिलता है:

We're working with "" 

यहाँ क्या हो रहा है? मेरा चर क्यों गूंज नहीं किया जा रहा है?

उत्तर

398

= से पहले की जगह का नाम नाम के हिस्से के रूप में व्याख्या किया गया है, और इसके बाद की जगह (साथ ही उद्धरण चिह्न) को मूल्य के हिस्से के रूप में व्याख्या किया जाता है। तो आपके द्वारा बनाए गए चर को %location % के साथ संदर्भित किया जा सकता है। यदि वह नहीं है जो आप चाहते हैं, तो परिभाषा में अतिरिक्त स्थान हटाएं।

+0

धन्यवाद ब्रायन। समस्या सुलझ गयी। –

+5

यदि '=' से पहले की जगह को नाम के हिस्से के रूप में व्याख्या किया गया है तो परिवर्तनीय * को '% स्थान%' के रूप में संदर्भित नहीं किया जा सकता है, इसे '% स्थान%' के रूप में संदर्भित किया जाना चाहिए। क्या यह एक टाइपो है? –

+6

@ मिस्सेबल वेरिएबल: आप सही हैं; ऐसा लगता है कि मूल जवाब गलत संपादन के शिकार हो गया। –

188

रिक्त स्थान महत्वपूर्ण हैं। आपने ' "bob"' के मान के साथ 'location ' नामक एक चर बनाया है।

यदि आप चाहते हैं अपने मूल्य में उद्धरण, फिर अपने कोड की तरह

set location="bob" 

दिखना चाहिए आप उद्धरण नहीं करना चाहते हैं, तो अपने कोड की तरह

set location=bob 

या बेहतर अभी तक

दिखना चाहिए
set "location=bob" 

अंतिम वाक्यविन्यास अनजान रिक्त स्थान को मूल्य में आने से रोकता है, और फिर भी सुरक्षा करता है टी & जैसे विशेष पात्र टी आदि

+2

क्या अंतिम वाक्यविन्यास के लिए कोई डाउनसाइड्स है? – Wolf

+1

@ भेड़िया - नहीं, कोई नकारात्मकता नहीं है। हालांकि, यह एक सीमा है जब यह सबसे प्रभावी है। जब तक मूल्य में उद्धरण शामिल नहीं होते हैं, तब तक लगभग कोई भी वर्ण भागने के बारे में चिंता किए बिना मूल्य में प्रकट हो सकता है। अपवाद '%' हैं, और संभवतः '!' यदि देरी विस्तार सक्षम है। लेकिन यदि मूल्य में उद्धरण होते हैं, तो आपको चिंता करना चाहिए कि '| ',' & ', आदि जैसे विषैले अक्षरों से बचने के लिए – dbenham

+1

यह विंडोज़ में पर्यावरण-चर सेट करने जैसा ही प्रतीत होता है। क्या यह बैच स्क्रिप्ट में स्थानीय-चर का उपयोग करने का एकमात्र तरीका है? – parasrish

4

इनपुट location.bat

@echo off 
cls 

set /p "location"="bob" 
echo We're working with %location% 
pause 

उत्पादन

We're working with bob 

(गलतियों यू किया: space और " ")

संबंधित मुद्दे