2010-10-05 14 views
5

Lassen Sie mich damit beginnen zu sagen, dass ich ein Linux-Typ und nicht wirklich vertraut mit VBS oder sogar Windows globale Variablen.wie Referenz Heimatverzeichnis auf Visual Basic-Skript

Ich bin aufgefordert, ein VBS-Skript zu aktualisieren, das im Grunde die neueste Version eines Zugriffsformulars auf den Computer kopiert. Derzeit wird dieses Zugriffsformular in C: \ MedMaint abgelegt. Das Problem ist, dass wir nicht als Administratoren an diesem Ort laufen. Wenn ein neuer Benutzer versucht, auf das VBS-Skript zuzugreifen, muss der Ordner vom ursprünglichen Benutzer gelöscht werden. Ich brauche dieses Skript zum Linux equivalant von ~/MedMaint oder ändern "C: \ Dokumente und Einstellungen \ MyUserName \ Anwendungsdaten \ MedMaint"

Hier ist ein Beispiel des Codes

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 möchte wissen, wie Sie die Referenz c: \ MedMaint \ auf das Benutzerverzeichnis des Benutzers ändern können

Antwort

15

Um den Pfad des Benutzerprofilordner (: \ Dokumente und Einstellungen \ <Benutzername> in Windows XP oder C: \ Benutzer \ <Benutzername> in Windows Vista zB C) zu erhalten

  • Bewerten Sie die USERPROFILE Umgebungsvariable mit dem WshShell.ExpandEnvironmentStrings Methode: Sie können eine der folgenden tun

    Set oShell = CreateObject("WScript.Shell") 
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
    
  • Rufen Sie den Ordnerpfad Shell.Namespace Methode:

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

Wenn Sie den Pfad des Anwendungsdatenordner benötigen (z C: \ Dokumente und Einstellungen \ <Benutzername> \ Anwendungsdaten in Windows XP oder C: \ Benutzer \ <Benutzername> \ AppData \ in Windows Vista Roaming), können Sie einen ähnlichen Code verwenden:

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

''# or 

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


um einen Ordnernamen an einen Pfad anhängen, können Sie einfach String-Verkettung wie diese verwenden:

strMedMaintFolder = strHomeFolder & "\MedMaint" 

Alernatively, wenn Ihr Skript enthält viele Pfad konz atenations, schlage ich vor, die FileSystemObject.BuildPath Methode, weil sie kümmert sich der Pfadtrenn nimmt (\) für Sie:

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

danke das war, was ich brauchte .... "Set oShell = Create (" WScript.Shell ") strHomeFolder = oShell.ExpandEnvironmentStrings ("% APPDATA% ")" –

2

Sie können das Shell-Objekt verwenden.

Werfen Sie einen Blick auf this Link.

1

Hier ist eine Möglichkeit, dies zu tun, wenn Sie den Windows Scripting Host verwenden.

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