我可以在 vbscript WSH 脚本中获取环境变量吗?
是否可以读取 Windows 脚本主机 (WSH) VBS 脚本中的系统环境变量?
(我正在使用 Windows Scripting Host 为 Cruise Control 的任务编写 VBScript,并希望获取项目构建 URL。)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
现有的答案都很有帮助,但让我尝试一个务实的总结:
通常,您需要当前进程的环境变量定义:
这相当于(请注意变量名称周围缺少
%
):警告:不要省略
("Process)
部分:如果这样做,您将获得变量的系统范围的定义;见下文。.ExpandEnvironmentStrings
在概念上更简单、更灵活:它可以使用嵌入(%
-封闭)环境变量引用来扩展任意字符串,例如:在极少数情况下,您可以必须从特定范围访问环境变量定义(当前进程除外)
注意:如上所述,省略范围参数默认为
系统 。
范围警告:以这种方式访问值不会扩展它:环境变量值可以嵌套:它们可以引用到其他环境变量。
在上面的示例中,返回值为
%SystemRoot%\TEMP
,其中包含对%SystemRoot%
的未扩展引用。要扩展结果,请将其传递给
.ExpandEnvironmentStrings()
,如上所示。The existing answers are all helpful, but let me attempt a pragmatic summary:
Typically, you want the current process's definition of an environment variable:
This is the equivalent of (note the absence of
%
around the variable name):Caveat: Do not omit the
("Process)
part: if you do, you'll get the system scope's definition of the variable; see below..ExpandEnvironmentStrings
is conceptually simpler and more flexible: It can expand arbitrary strings with embedded (%
-enclosed) environment-variable references; e.g.:On rare occasions you may have to access environment-variable definitions from a specific scope (other than the current process's).
Note: As stated above, omitting the scope argument defaults to the
System
scope.Caveat: Accessing a value this way does not expand it: Environment-variable values can be nested: they can refer to other environment variables.
In the example above, the return value is
%SystemRoot%\TEMP
, which contains the unexpanded reference to%SystemRoot%
.To expand the result, pass it to
.ExpandEnvironmentStrings()
, as demonstrated above.这是一个示例(取自 此处):
Here's an example (taken from here):
来自此处。 ..
此外,TechNet 上有更多详细信息。
From here ...
Also, much more detail on TechNet.
这对我有用:
或者从 shell:
或者从环境变量(它应该可以工作,但是当我测试时它是错误的!):
This works for me:
or from the shell:
or from environment variable (it should work, but when i tested it was wrong!):