mik*_*son 18 vbscript wsh environment-variables
是否可以在Windows Scripting Host(WSH)VBS脚本中读取系统环境变量?
(我正在使用Windows Scripting Host编写VBScript以获取Cruise Control的任务,并希望获取项目构建URL.)
M4N*_*M4N 26
这是一个例子(取自这里):
Set oShell = CreateObject( "WScript.Shell" )
user=oShell.ExpandEnvironmentStrings("%UserName%")
comp=oShell.ExpandEnvironmentStrings("%ComputerName%")
WScript.Echo user & " " & comp
Run Code Online (Sandbox Code Playgroud)
从这里 ......
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")
Run Code Online (Sandbox Code Playgroud)
另外,有关TechNet的更多细节.
小智 6
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
Run Code Online (Sandbox Code Playgroud)
现有的答案都很有帮助,但让我尝试一个实用的总结:
通常情况下,你想对当前进程的环境变量的定义:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
Run Code Online (Sandbox Code Playgroud)
这相当于(注意%变量名称周围没有):
CreateObject("WScript.Shell").Environment("Process").Item("TEMP")
Run Code Online (Sandbox Code Playgroud)
警告:不要省略该("Process)部分:如果你这样做,你将得到系统范围的变量定义; 见下文.
.ExpandEnvironmentStrings在概念上更简单,更灵活:它可以扩展任意字符串,包含嵌入的(已%关闭的)环境变量引用; 例如:
CreateObject("WScript.Shell").ExpandEnvironmentStrings("My name is %USERNAME%")
Run Code Online (Sandbox Code Playgroud)
在极少数情况下,您可能必须从特定范围(当前进程除外)访问环境变量定义.
sScope = "System" ' May be: "Process", "User", "Volatile", "System"
CreateObject("WScript.Shell").Environment(sScope).Item("TEMP")
Run Code Online (Sandbox Code Playgroud)
注意:如上所述,省略scope参数默认为System范围.
警告:以这种方式访问值不会扩展它:环境变量值可以嵌套:它们可以引用其他环境变量.
在上面的示例中,返回值为%SystemRoot%\TEMP,其中包含未展开的引用%SystemRoot%.
要扩展结果,请将其传递给.ExpandEnvironmentStrings(),如上所示.