【问题标题】:Which environment variable to use for filepath?哪个环境变量用于文件路径?
【发布时间】:2015-06-12 19:30:37
【问题描述】:

我想将一个变量分配给位于 C: 驱动器中“用户”文件夹中的文件路径。这个文件路径因每个用户而异,但我无法准确确定要使用哪个环境变量,以及如何将它与 VBScript 一起使用。

示例代码:

Set wshShell = CreateObject("WScript.Shell")
Set wshSystemEnv = wshShell.Environment("USER")

'The folder where to save the file:
strFolder = "C:\Users\" & wshSystemEnv & "\AppData\Roaming\Microsoft\AddIns"

那么如何在文件路径中使用wshSystemEnv 变量,它甚至是正确的变量吗?

strFolder 行弹出的错误是

参数数量错误或属性分配无效

【问题讨论】:

  • 使用wshSystemEnv = ...而不是Set wshSystemEnv = ...,你分配的是一个字符串,而不是一个对象。
  • @omegastripes 否。Environment 属性返回 WshEnvironment 对象。您可能正在考虑ExpandEnvironmentStrings 方法。
  • 哦,我的错! @AnsgarWiechers 你确实是对的!
  • 不要使用wshShell.Environment("USER"),因为它不包含带有用户名的项目。

标签: vbscript environment-variables


【解决方案1】:

使用%APPDATA% 环境变量:

Set wshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

appData = wshShell.ExpandEnvironmentStrings("%APPDATA%")

strFolder = fso.BuildPath(appData, "Microsoft\AddIns")

始终使用BuildPath 方法构建您的路径。


您从代码中得到的错误是因为wshSystemEnv 是一个对象,不能与这样的字符串连接。


环境变量%APPDATA% 传统上指向用户(漫游)配置文件中的应用程序数据文件夹。由于 Windows Vista,Microsoft 将该文件夹拆分为 three subfolders,其中只有一个仍然是漫游配置文件 (AppData\Roaming) 的一部分。其他 2 个主要出于同步性能原因而保留在本地。

%APPDATA% 指向 Roaming 子文件夹而不是 %USERPROFILE%\AppData 的原因很可能是它指向父文件夹将需要许多应用程序供应商发布具有修改路径的更新,因为额外的层次结构级别(%APPDATA%\application\foo%APPDATA%\Roaming\application\foo)。

【讨论】:

  • 感谢您的所有帮助,您的解决方案奏效了。起初,我在最后一行代码中添加了“Roaming\Microsoft\AddIns”,但遇到了文件路径错误。你能解释一下为什么 &APPDATA& 比预期更深一层吗?
【解决方案2】:

适当的环境变量是“USERNAME”。

Set wshShell = CreateObject("WScript.Shell")
wshSystemEnv = wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
strFolder = "C:\Users\" & wshSystemEnv & "\AppData\Roaming\Microsoft\AddIns" 

或者你也可以使用:

wshSystemEnv = wshShell.Environment("PROCESS").Item("USERNAME")

只需 Google VBScript 环境变量,您就会获得大量示例和参考。

【讨论】:

  • 代码的错误框显示“Object required: '[string: "b012918"]'”并且 b012918 是我的用户名
  • 是的——正如对您问题的其他评论所述,您需要从第二行中删除 SET。 SET 应该在创建对象时使用,但如果您只是将某些内容分配给变量,则不应使用。我通过将 Set 放在该行上,就像您在问题中遇到的那样,重现了您的“需要对象”错误。
猜你喜欢
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 2023-03-24
  • 2017-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
相关资源
最近更新 更多