2009-04-20 17 views
5

में एक पर्यावरण चर सेट करना मैं डब्ल्यूएसएच जेएसक्रिप्ट फ़ाइल में एक पर्यावरण चर सेट कैसे कर सकता हूं जो किसी अन्य प्रोग्राम को कॉल करता है? यहाँ कम परीक्षण का मामला है:जावास्क्रिप्ट

envtest.js 
---------- 
var oShell = WScript.CreateObject("WScript.Shell"); 
var oSysEnv = oShell.Environment("SYSTEM"); 
oSysEnv("TEST_ENV_VAR") = "TEST_VALUE"; 
oExec = oShell.Run("envtest.bat", 1, true);  

envtest.bat 
----------- 
set 
pause 

मैं चर की सूची में TEST_ ENV _VAR देखने की उम्मीद है, लेकिन यह वहाँ नहीं है। क्या गलत है?

संपादित करें:

कोई एक काम कर कोड नमूना उत्पादन कर सकते हैं, तो मुझे लगता है कि सही जवाब के रूप में चिह्नित कर देंगे। :)

+0

मुझे आश्चर्य है कि क्या आप कुछ दुर्भावनापूर्ण करने की कोशिश कर रहे हैं। –

उत्तर

6

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

आपका कोड-नमूना अच्छा काम करता है। यह वैरिएबल को सिस्टम वातावरण में जोड़ता है।

तो, आपको न केवल आपके सिस्टम के लिए बल्कि आपकी प्रक्रिया के लिए चर सेट करने की आवश्यकता है।

यहां कोड है।

var oShell = WScript.CreateObject("WScript.Shell"); 
var oSysEnv = oShell.Environment("SYSTEM"); 
oSysEnv("TEST1") = "TEST_VALUE"; 
var oSysEnv = oShell.Environment("PROCESS"); 
oSysEnv("TEST1") = "TEST_VALUE"; 
oExec = oShell.Run("envtest.bat", 1, true); 

एक बार जब आप सिस्टम चर बनाते हैं।

यह वर्तमान प्रक्रिया के लिए नव निर्मित चर निर्दिष्ट करेगा। इसलिए, "SET" आदेश निष्पादित करते समय, आपके बच्चे की प्रक्रिया उस चर को प्राप्त कर सकती है।

मेरे खराब-अंग्रेज़ी के लिए खेद है।

+0

धन्यवाद! –

+0

मैंने [एक और सवाल] खोला [http://stackoverflow.com/questions/4957251/javascript-how-to-retrieve-an-environment-variable) यह पूछने के लिए कि क्या ऐसा कुछ पर्यावरण परिवर्तनीय मूल्य को पुनर्प्राप्त करने के लिए उपयोग किया जा सकता है, क्या आप कुछ जानते हैं? –

0

आपको सिस्टम पर्यावरण चर मिल रहे हैं। मुझे संदेह है कि आपको बस उन्हें संशोधित करने की अनुमति नहीं है; आप इसे उपयोगकर्ता पर्यावरण चर में बदलने का प्रयास कर सकते हैं।

मुझे यह भी नहीं पता कि Environment() पर तर्क केस-संवेदी है या नहीं। एमएस का दस्तावेज "SYSTEM" के बजाय "System" का उपयोग करता है। एक फर्क पड़ सकता है लेकिन मुझे यकीन नहीं है।

2

वहाँ 4 "संग्रह" आप शायद प्रक्रिया चाहते हैं, तो आप सिर्फ एक बच्चे की प्रक्रिया की जरूरत है चर