2010-10-05 17 views
5

Permítanme comenzar diciendo que soy un tipo de Linux y que no estoy realmente familiarizado con VBS o incluso las variables globales de Windows.cómo hacer referencia a la carpeta de inicio en la secuencia de comandos visual básica

Me piden que actualice un script VBS que básicamente copia la última versión de un formulario de acceso a la computadora. Actualmente pone este formulario de acceso en C: \ MedMaint. El problema es que no nos ejecutamos como administradores en esta ubicación. Entonces, cuando un nuevo usuario intenta acceder al script vbs, el usuario original debe borrar la carpeta. Necesito cambiar esta secuencia de comandos a la equivalant Linux de ~/MedMaint, o "C: \ Documents and Settings \ UsUaRiO \ Datos de programa \ MedMaint"

Este es un ejemplo del código

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 le gustaría saber cómo cambiar la referencia c: \ MedMaint \ al directorio inicial del usuario

Respuesta

15

para obtener la ruta de la carpeta del perfil del usuario (por ejemplo C: \ Documents and Settings \ < nombre de usuario > en Windows XP o C: \ Users \ < nombre de usuario > en Windows Vista) , puede realizar cualquiera de los siguientes:

  • Evaluar la variable USERPROFILE medio ambiente utilizando el método WshShell.ExpandEnvironmentStrings:

    Set oShell = CreateObject("WScript.Shell") 
    strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%") 
    
  • recuperar la ruta de la carpeta utilizando el método de Shell.Namespace:

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

Si necesita la ruta de la carpeta de datos de aplicación (por ejemplo, C: \ Documents and Settings \ < nombre de usuario > \ Datos de programa en Windows XP o C: \ Users \ < nombre de usuario > \ AppData \ Roaming en Windows Vista), se puede utilizar un código similar:

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

''# or 

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


para añadir un nombre de carpeta a un camino, que podría simplemente utilizar la concatenación de cadenas como esto:

strMedMaintFolder = strHomeFolder & "\MedMaint" 

Alernatively, si el script contiene muchas ruta conc atenations, sugiero utilizar el método FileSystemObject.BuildPath, ya que se encarga de separadores de ruta (\) para usted:

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

agradecimiento esto era lo que necesitaba .... "Set oShell = CreateObject (" WScript.Shell ") strHomeFolder = oShell.ExpandEnvironmentStrings ("% APPDATA% ")" –

2

Puede usar el objeto Shell.

Echa un vistazo a this enlace.

1

Aquí hay una forma de hacerlo si está utilizando el Windows Scripting Host.

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