2010-04-29 12 views
7

यूनिक्स में आप तकनीक का उपयोग करके एक पर्यावरण चर में एक स्क्रिप्ट के आउटपुट को here समझा सकते हैं - लेकिन विंडोज़ समतुल्य क्या है?विंडोज शैल स्क्रिप्टिंग (cmd.exe) में आप किसी प्रोग्राम के stdout को पर्यावरण चर में कैसे निर्दिष्ट करते हैं?

मेरे पास एक पाइथन उपयोगिता है जिसका उद्देश्य पर्यावरण चर को सही करना है। यह स्क्रिप्ट बस stars के लिए chars का एक अनुक्रम लिखता है। इस प्रश्न के प्रयोजनों के लिए, तथ्य यह है कि मेरी उपयोगिता पायथन में लिखी गई है, यह अप्रासंगिक है, यह केवल एक प्रोग्राम है जिसे मैं कमांड-प्रॉम्प्ट से कॉल कर सकता हूं जो पाठ की एक पंक्ति को आउटपुट करता है। इस आदेश WORKSPACE वातावरण चर के मूल्य चल सटीक लेख है कि मेरी उपयोगिता सामान्य रूप से प्रिंट आउट हैं शामिल करना चाहिए के बाद

set WORKSPACE=[ the output of my_util.py ] 

:

मैं कुछ इस तरह (है कि काम करता है) करना चाहते हैं।

क्या यह किया जा सकता है? कैसे?


Update1: काम पर किसी ने सुझाव दिया:

python util.py | set /P WORKSPACE= 

सिद्धांत रूप में, कि अजगर स्क्रिप्ट शीर्ष env-वर कार्यस्थल की stdout आवंटित होता है, और अभी तक यह काम नहीं करता, क्या है यहाँ गलत हो रहा है?

+1

यह पहले से ही पूछा जा चुका है - [मैं विंडोज़ में एक चर में कमांड का परिणाम कैसे प्राप्त करूं?] (Http://stackoverflow.com/questions/108439/) –

उत्तर

11

उपयोग:

for /f "delims=" %A in ('<insert command here>') do @set <variable name>=%A 

उदाहरण के लिए:

for /f "delims=" %A in ('time /t') do @set my_env_var=%A 

... आदेश "समय/टी" चलाने के लिए और परिणाम के लिए env चर "my_env_var" सेट हो जाएगा।

% ए के बजाय %% ए का उपयोग करना याद रखें यदि आप इसे बीएटी फ़ाइल के अंदर चला रहे हैं।

+0

वाह, यह कुछ भयानक पटकथा है लेकिन यह सिर्फ शायद काम कर जाये। मैं अब कोशिश करने जा रहा हूँ! –

+0

क्या आप बैच फ़ाइल के संदर्भ में% ए के बजाय %% ए के अर्थ की व्याख्या कर सकते हैं? –

+1

बैच फ़ाइलों में, "%" एक संरक्षित चरित्र है। उदाहरण के लिए,% 1 कमांड लाइन पर दिए गए पहले तर्क को संदर्भित करता है। इसलिए, ऐसे मामलों में जहां आपको "%" का उपयोग करने की आवश्यकता है जहां आप कमांड लाइन तर्कों का जिक्र नहीं कर रहे हैं, तो आप इसे "%%" की तरह डबल करते हैं। –

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