none
Usar varible %windir% de sistema en un .vbs RRS feed

  • Pregunta

  • Hola, necesito usar la varible %windir% de sistema en un script porque utilizo una ruta que pasa por la carpeta de windows y claro segun en que sistema operativo se ejecute el nombre de esa carpeta cambia. La unica forma que me imagino es pudiendo usar la varible windir de sistema, pero si alguien me puede decir otra forma... pues tambien se acepta jejejej
    Os dejo el código para que veáis a lo que me refiero.



    Rem Crea un objeto Shell para mostrar el mensaje de bienvenida hecho en Visual Basic
    Set objShell = CreateObject("Wscript.Shell")

    Rem Ejecutar el saludo localmente
    Dim strEjecutable, strOrigen, strDestino

    strEjecutable = "saludo.exe"
    strOrigen = "direccion de origen" & strEjecutable
    strDestino = "C:\windows\system32\" & strEjecutable

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If Not objFSO.FileExists(strEjecutable) Then
        objFSO.CopyFile strOrigen , strDestino 
    End If

    objShell.Run strDestino

    Set objFSO=Nothing

    lunes, 30 de junio de 2008 9:36

Respuestas

  • Hola,

    Te paso una función con la que podrás sacar el valor del %WINDIR% desde un vbs. La función devuelve un string con el path, para que la llames desde tu main o algo así:

    Function DevuelvePathWindows ()

       Set oShell = CreateObject("Wscript.Shell")
       Set oExec  = oShell.Exec("cmd /C echo %WINDIR%")
      
       Do While not oExec.StdOut.AtEndOfStream
         strLineaCapturada = oExec.StdOut.Readline()
       Loop

       DevuelvePathWindows = strLineaCapturada

    End Function

    jueves, 31 de julio de 2008 20:52
  • Hola, clavi

    Puedes usar el método ExpandEnvironmentStrings("") , que sirve para trabajar con variables de entorno.

    el codigo quedaria asi


    Rem Crea un objeto Shell para mostrar el mensaje de bienvenida hecho en Visual Basic
    Set objShell = CreateObject("Wscript.Shell")

    Rem Ejecutar el saludo localmente
    Dim strEjecutable, strOrigen, strDestino

    strEjecutable = "saludo.exe"
    strOrigen = "direccion de origen" & strEjecutable
    strDestino = objShell.ExpandEnvironmentStrings("%WinDir%\System32\") & strEjecutable

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If Not objFSO.FileExists(strEjecutable) Then
        objFSO.CopyFile strOrigen , strDestino 
    End If

    objShell.Run strDestino

    Set objFSO=Nothing



    Tambien puedes utilizar la bariable de entorno %SystemRoot% = C:\Windows\

    Espero que te sirva, saludos
    • Propuesto como respuesta Qlay jueves, 16 de julio de 2009 6:48
    • Marcado como respuesta Atilla ArrudaModerator lunes, 8 de marzo de 2010 21:02
    jueves, 16 de julio de 2009 6:42

Todas las respuestas

  • Hola,

    Te paso una función con la que podrás sacar el valor del %WINDIR% desde un vbs. La función devuelve un string con el path, para que la llames desde tu main o algo así:

    Function DevuelvePathWindows ()

       Set oShell = CreateObject("Wscript.Shell")
       Set oExec  = oShell.Exec("cmd /C echo %WINDIR%")
      
       Do While not oExec.StdOut.AtEndOfStream
         strLineaCapturada = oExec.StdOut.Readline()
       Loop

       DevuelvePathWindows = strLineaCapturada

    End Function

    jueves, 31 de julio de 2008 20:52
  • Hola, clavi

    Puedes usar el método ExpandEnvironmentStrings("") , que sirve para trabajar con variables de entorno.

    el codigo quedaria asi


    Rem Crea un objeto Shell para mostrar el mensaje de bienvenida hecho en Visual Basic
    Set objShell = CreateObject("Wscript.Shell")

    Rem Ejecutar el saludo localmente
    Dim strEjecutable, strOrigen, strDestino

    strEjecutable = "saludo.exe"
    strOrigen = "direccion de origen" & strEjecutable
    strDestino = objShell.ExpandEnvironmentStrings("%WinDir%\System32\") & strEjecutable

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    If Not objFSO.FileExists(strEjecutable) Then
        objFSO.CopyFile strOrigen , strDestino 
    End If

    objShell.Run strDestino

    Set objFSO=Nothing



    Tambien puedes utilizar la bariable de entorno %SystemRoot% = C:\Windows\

    Espero que te sirva, saludos
    • Propuesto como respuesta Qlay jueves, 16 de julio de 2009 6:48
    • Marcado como respuesta Atilla ArrudaModerator lunes, 8 de marzo de 2010 21:02
    jueves, 16 de julio de 2009 6:42