2010-10-05 54 views
5

让我开始说我是一个linux的家伙,并不真正熟悉VBS甚至windows全局变量。如何在visual basic脚本上引用home文件夹

我被要求更新VBS脚本,该脚本基本上将最新版本的访问表单复制到计算机。目前它将此访问表单放入C:\ MedMaint中。问题在于我们不在此位置以管理员身份运行。因此,当新用户尝试访问vbs脚本时,该文件夹必须由原始用户删除。我需要此脚本更改为〜/ MedMaint的linux的equivalant,或 “C:\ Documents和Settings \ MyUserName输入\应用数据\ 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 \引用更改为用户的主目录

回答

15

为了得到用户的配置文件夹的路径(如C:\ Documents和Settings \ <用户名>在Windows XP或C:在Windows Vista \用户\ <用户名>) ,你可以做任何以下的:

  • 使用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 
    

如果需要应用程序数据的文件夹的路径(例如C:在Windows XP或Ç\的Documents and Settings \ <用户名> \应用数据:\用户\ <用户名> \ AppData的\ 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,如果您的脚本包含许多路径浓atenations,我建议使用FileSystemObject.BuildPath方法,因为它需要照顾路径分隔符(\)为您:

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

谢谢你,这是我需要的东西......“设置oShell =的CreateObject(” WScript的。Shell“) strHomeFolder = oShell.ExpandEnvironmentStrings(”%APPDATA%“)” – 2010-10-05 20:37:12

2

您可以使用Shell对象。

看看this链接。

1

如果您使用的是Windows脚本宿主,以下是一种方法。

Set WshShell = CreateObject("WScript.Shell") 
strHomeFolder = WshShell.ExpandEnvironmentStrings("%USERPROFILE%") 
相关问题