如何在visual basic脚本上引用home文件夹

时间:2010-10-05 16:38:37

标签: vbscript

首先我要说的是,我是一个Linux人,并不熟悉VBS甚至是Windows全局变量。

我被要求更新VBS脚本,该脚本基本上将最新版本的访问表单复制到计算机。目前,它将此访问形式放在C:\ MedMaint中。问题是我们不在此位置以管理员身份运行。因此,当新用户尝试访问vbs脚本时,原始用户必须删除该文件夹。我需要将此脚本更改为〜/ MedMaint的linux等效项,或“C:\ Documents and Settings \ MyUserName \ Application Data \ MedMaint”

以下是代码示例

    If Not FSO.FileExists("c:\MedMaint\" & File.Name) Then
        FSO.CopyFile File.Path, "c:\MedMaint\"          ' copy the missing file
    Else 
        Set RPFile = FSO.GetFile("c:\MedMaint\" & File.Name)    ' Get the file object from the local object
        If (File.DateLastModified >= RPFile.DateLastModified) Then
            FSO.CopyFile File.Path, "c:\MedMaint\" 

我想知道如何将c:\ MedMaint \引用更改为用户的主目录

3 个答案:

答案 0 :(得分:16)

获取用户个人资料文件夹的路径(例如,Windows XP中的 C:\ Documents and Settings \< username> C:\ Users在Windows Vista中\< username> ,您可以执行以下任何操作:

  • 使用WshShell.ExpandEnvironmentStrings方法评估USERPROFILE环境变量:

    Set oShell = CreateObject("WScript.Shell")
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
    
  • 使用Shell.Namespace方法检索文件夹路径:

    Const ssfPROFILE = &H28
    Set oShell = CreateObject("Shell.Application")
    strHomeFolder = oShell.NameSpace(ssfPROFILE).Self.Path
    

如果您需要应用程序数据文件夹的路径(例如,Windows XP中的 C:\ Documents and Settings \< username> \ Application Data C:\ Users \< username> \ AppData \ Roaming 在Windows Vista中),您可以使用类似的代码:

Set oShell = CreateObject("WScript.Shell")
strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%")

''# or

Const ssfAPPDATA = &H1A
Set oShell = CreateObject("Shell.Application")
strHomeFolder = oShell.NameSpace(ssfAPPDATA).Self.Path


要将文件夹名称附加到路径,您可以简单地使用字符串连接,如下所示:

strMedMaintFolder = strHomeFolder & "\MedMaint"

Alernatively,如果你的脚本包含很多路径连接,我建议使用FileSystemObject.BuildPath方法,因为它会为你处理路径分隔符(\):

Set oFSO = CreateObject("Scripting.FileSystemObject")
strMedMaintFolder = fso.BuildPath(strHomeFolder, "MedMaint") 

答案 1 :(得分:2)

您可以使用Shell对象。

查看this链接。

答案 2 :(得分:1)

如果您使用的是Windows Scripting Host,则可以使用以下方法。

Set WshShell = CreateObject("WScript.Shell")
strHomeFolder = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")