2009-05-24 20 views

Trả lời

20

Dưới đây là một ví dụ (lấy từ here):

Set oShell = CreateObject("WScript.Shell") 
user=oShell.ExpandEnvironmentStrings("%UserName%") 
comp=oShell.ExpandEnvironmentStrings("%ComputerName%") 
WScript.Echo user & " " & comp 
7

Từ 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") 

Ngoài ra, nhiều thêm detail on TechNet.

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

này làm việc cho tôi:

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

hoặc từ vỏ:

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

hoặc từ môi trường biến (nó sẽ hoạt động, b ut khi tôi thử nghiệm nó đã sai):

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

[đối tượng được trả về bởi 'CreateObject (" WScript.Network "'] (https://msdn.microsoft.com/en-us/library/s6wt333f (v = vs.84) .aspx) không cung cấp chung truy cập biến môi trường, nó chỉ xảy ra để trưng ra 3 giá trị như các thuộc tính cũng được phản ánh trong các biến môi trường: 'ComputerName',' UserDomain', và 'UserName' Lý do ví dụ cuối cùng của bạn không hoạt động là' WshShell. Environment' giống với 'WshShell.Environment (" System ")', và '% USERNAME%' không được định nghĩa trong phạm vi _system_. – mklement0

4

Những câu trả lời hiện đều hữu ích, nhưng hãy để tôi cố gắng một tóm tắt thực dụng:

Thông thường, bạn muốn nét các quá trình hiện tại của một biến môi trường:

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

Đây là tương đương với (lưu ý sự vắng mặt của % Aro und tên biến):

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

Caveat: Đừng bỏ qua các phần ("Process): nếu bạn làm thế, bạn sẽ nhận được định nghĩa của hệ thống phạm vi của biến; xem bên dưới.

.ExpandEnvironmentStrings là khái niệm đơn giản và linh hoạt hơn: Nó có thể mở rộng tùy ý chuỗi với nhúng (% -enclosed) tài liệu tham khảo với môi trường biến; ví dụ .:

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

Vào những dịp hiếm hoi bạn có thể phải truy cập định nghĩa môi trường biến từ một phạm vi cụ thể (khác với quy trình hiện tại của).

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

Lưu ý: Như đã nêu ở trên, bỏ qua đối số phạm vi mặc định là phạm vi System.

Caveat: Truy cập vào một giá trị theo cách này không mở rộng nó: giá trị môi trường biến có thể lồng nhau: họ có thể tham khảo biến môi trường khác.
Trong ví dụ ở trên, giá trị trả về là %SystemRoot%\TEMP, chứa tham chiếu chưa được mở rộng đến %SystemRoot%.
Để mở rộng kết quả, hãy chuyển nó đến .ExpandEnvironmentStrings(), như được minh họa ở trên.

Các vấn đề liên quan