2009-05-24 9 views
16

विंडोज स्क्रिप्टिंग होस्ट (डब्ल्यूएसएच) वीबीएस स्क्रिप्ट में सिस्टम पर्यावरण चर पढ़ने के लिए संभव है?क्या मैं vbscript WSH स्क्रिप्ट में पर्यावरण चर उठा सकता हूं?

इसके अलावा (मैं एक क्रूज नियंत्रण के लिए कार्य के लिए Windows स्क्रिप्टिंग होस्ट का उपयोग करते हुए और इस परियोजना का निर्माण यूआरएल को लेने के लिए चाहते हैं एक VBScript लिख रहा हूँ।)

उत्तर

20

यहाँ एक उदाहरण (here से लिया गया) है

Dim objNetwork 
Set objNetwork = CreateObject("WScript.Network") 
MsgBox objNetwork.UserName 

या खोल से:

Set wshShell = WScript.CreateObject("WScript.Shell") 
strUserName = wshShell.ExpandEnvironmentStrings("%USERNAME%") 

या पर्यावरण से परिवर्तनीय (यह काम करना चाहिए, बी ut जब मैं परीक्षण किया यह गलत था):

Set WshShell = CreateObject("WScript.Shell") 
Set WshEnv = WshShell.Environment 
MsgBox "USERNAME=" & WshEnv.Item("USERNAME") 
7

here से ...

Set WshShell = WScript.CreateObject("WScript.Shell") 

Set WshProccessEnv = WshShell.Environment("Process") 
Set WshSysEnv = WshShell.Environment("System") 

Wscript.Echo WshSysEnv("NUMBER_OF_PROCESSORS") 
Wscript.Echo WshProccessEnv("Path") 

, ज्यादा अधिक detail on TechNet

Set oShell = CreateObject("WScript.Shell") 
user=oShell.ExpandEnvironmentStrings("%UserName%") 
comp=oShell.ExpandEnvironmentStrings("%ComputerName%") 
WScript.Echo user & " " & comp 
3
Set WshShell = CreateObject("WScript.Shell")  
Set WshEnv = WshShell.Environment 
WScript.Echo "WINDIR=" & WshEnv.Item("WINDIR") & vbCrLf & vbCrLf 
Set WshShell = CreateObject("WScript.Shell") 
WScript.Echo "Environment System:"    & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("System") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment User:"  & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("User") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Volatile:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Volatile") 
    WScript.Echo IEnv 
Next 

WScript.Echo vbCrLf & "Environment Process:" & vbCrLf & _ 
     "..............................................." 

For Each IEnv In WshShell.Environment("Process") 
    WScript.Echo IEnv 
Next 
-1

यह मेरे लिए काम करता है::

+0

[ऑब्जेक्ट 'CreateObject ("WScript.Network" '] (https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx द्वारा लौटाया गया ऑब्जेक्ट जेनेरिक प्रदान नहीं करता है पर्यावरण-परिवर्तनीय पहुंच, यह केवल 3 मानों को उन गुणों के रूप में प्रकट करने के लिए होता है जो पर्यावरण चर में प्रतिबिंबित होते हैं: 'कंप्यूटर नाम', 'उपयोगकर्ता डोमेन' और 'उपयोगकर्ता नाम'। कारण यह है कि आपका अंतिम उदाहरण काम नहीं करता है कि 'WshShell। पर्यावरण' 'WshShell.Anvironment (" System ")' के समान है, और '% USERNAME%' को _system_ दायरे में परिभाषित नहीं किया गया है। – mklement0

4

मौजूदा जवाब बिल्कुल उपयोगी हैं, लेकिन मुझे एक व्यावहारिक सारांश प्रयास करते हैं:

आमतौर पर, आप चाहते हैं मौजूदा प्रक्रिया के परिभाषा एक वातावरण चर:

CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%") 

इस के बराबर (% Aro के अभाव ध्यान दें und चर नाम):

CreateObject("WScript.Shell").Environment("Process").Item("TEMP") 

चेतावनी: ("Process) हिस्सा छोड़ नहीं है: यदि आप करते हैं, आप चर का प्रणाली गुंजाइश की परिभाषा मिल जाएगा; निचे देखो।

.ExpandEnvironmentStrings धारणात्मक सरल और अधिक लचीला है: यह एम्बेडेड (% -enclosed) पर्यावरण के वैरिएबल संदर्भ के साथ मनमाना तार का विस्तार कर सकते हैं; उदा .:

CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%") 

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

sScope = "System" ' May be: "Process", "User", "Volatile", "System" 
    CreateObject("WScript.Shell").Environment(sScope).Item("TEMP") 

ध्यान दें: ऊपर कहा गया है, System गुंजाइश के लिए गुंजाइश तर्क चूक को छोड़ते हुए।

चेतावनी: एक मूल्य के इस तरह विस्तार नहीं करता पहुँचना यह पर्यावरण-चर मान नेस्टेड हो सकता है: वे अन्य वातावरण चर का उल्लेख कर सकते।
उदाहरण में ऊपर, वापसी मान %SystemRoot%\TEMP, जो %SystemRoot% करने के लिए अविस्तारित संदर्भ शामिल है।
परिणाम का विस्तार करने के लिए, ऊपर दिखाए गए अनुसार इसे .ExpandEnvironmentStrings() पर पास करें।

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