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.
[đố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