tags:

views:

27

answers:

3

Let me start by saying that I'm a linux guy and not really familiar with VBS or even windows global variables.

I'm being called upon to update a VBS script which basically copies the latest version of a access form to the computer. Currently it puts this access form in C:\MedMaint. The problem is that we do not run as administrators in this location. So when a new user tries to access the vbs script, the folder must be deleted by the original user. I need to change this script to the linux equivalant of ~/MedMaint, or "C:\Documents and Settings\MyUserName\Application Data\MedMaint"

Here is a sample of the code

    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\" 

I would like to know how to change the c:\MedMaint\ reference to the user's home dir

+1  A: 

You can use the Shell Object.

Have a look at this link.

Raj
+1  A: 

Here is one way of doing it if you are using the Windows Scripting Host.

Set WshShell = CreateObject("WScript.Shell")
strHomeFolder = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
YWE
+2  A: 

To get the path of the user's profile folder (e.g. C:\Documents and Settings\<username> in Windows XP or C:\Users\<username> in Windows Vista), you can do any of the following:

  • Evaluate the USERPROFILE environment variable using the WshShell.ExpandEnvironmentStrings method:

    Set oShell = CreateObject("WScript.Shell")
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
    
  • Retrieve the folder path using the Shell.Namespace method:

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

If you need the path of the application data folder (e.g. C:\Documents and Settings\<username>\Application Data in Windows XP or C:\Users\<username>\AppData\Roaming in Windows Vista), you can use similar code:

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

''# or

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


To append a folder name to a path, you could simply use string concatenation like this:

strMedMaintFolder = strHomeFolder & "\MedMaint"

Alernatively, if your script contains many path concatenations, I suggest using the FileSystemObject.BuildPath method, because it takes care of path separators (\) for you:

Set oFSO = CreateObject("Scripting.FileSystemObject")
strMedMaintFolder = fso.BuildPath(strHomeFolder, "MedMaint") 
Helen
thank you this was what I needed.... " Set oShell = CreateObject("WScript.Shell") strHomeFolder = oShell.ExpandEnvironmentStrings("%APPDATA%") "
Adam Outler