2010-10-05 6 views
5

Vorrei iniziare dicendo che sono un ragazzo di Linux e non ho molta familiarità con VBS o anche con le variabili globali di Windows.come fare riferimento alla cartella principale sullo script di base visivo

Sono stato chiamato per aggiornare uno script VBS che sostanzialmente copia l'ultima versione di un modulo di accesso al computer. Attualmente inserisce questo modulo di accesso in C: \ MedMaint. Il problema è che non siamo in esecuzione come amministratori in questa posizione. Quindi, quando un nuovo utente tenta di accedere allo script vbs, la cartella deve essere cancellata dall'utente originale. Ho bisogno di cambiare questo script per l'equivalant linux di ~/MedMaint, o "C: \ Documents and Settings \ MyUserName \ Dati applicazioni \ MedMaint"

Ecco un esempio del codice

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 vorrebbe sapere come modificare il c: \ MedMaint \ riferimento alla directory principale dell'utente

risposta

15

per ottenere il percorso della cartella del profilo dell'utente (ad es C: \ Documents and Settings \ < nome utente > in Windows XP o C: \ Users \ < nome utente > in Windows Vista) , si può fare una delle seguenti:

  • Valutare la variabile d'ambiente USERPROFILE utilizzando il metodo WshShell.ExpandEnvironmentStrings:

    Set oShell = CreateObject("WScript.Shell") 
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
    
  • recuperare il percorso della cartella utilizzando il metodo Shell.Namespace:

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

Se è necessario il percorso della cartella dei dati applicazione (per esempio C: \ Documents and Settings \ < nome utente > \ Dati applicazioni in Windows XP o C: \ Users \ < nome utente > \ AppData \ Roaming in Windows Vista), è possibile utilizzare codice simile:

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

''# or 

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


per aggiungere un nome di cartella in un percorso, si può semplicemente utilizzare concatenazione di stringhe in questo modo:

strMedMaintFolder = strHomeFolder & "\MedMaint" 

Alernatively, se lo script contiene molti percorso conc atenations, vi suggerisco di utilizzare il metodo FileSystemObject.BuildPath, perché si prende cura dei separatori di percorso (\) per voi:

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

ringraziamento questo era quello che mi serviva .... "Set oShell = CreateObject (" WScript.Shell ") strHomeFolder = oShell.ExpandEnvironmentStrings ("% APPDATA% ")" –

2

È possibile utilizzare l'oggetto shell.

Dai un'occhiata al link this.

1

Ecco un modo per farlo se si utilizza Windows Scripting Host.

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