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

    Question

  • 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

    Monday, June 30, 2008 9:36 AM

Answers

  • 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

    Thursday, July 31, 2008 8:52 PM
  • 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
    • Proposed as answer by Qlay Thursday, July 16, 2009 6:48 AM
    • Marked as answer by Atilla ArrudaModerator Monday, March 08, 2010 9:02 PM
    Thursday, July 16, 2009 6:42 AM

All replies

  • 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

    Thursday, July 31, 2008 8:52 PM
  • 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
    • Proposed as answer by Qlay Thursday, July 16, 2009 6:48 AM
    • Marked as answer by Atilla ArrudaModerator Monday, March 08, 2010 9:02 PM
    Thursday, July 16, 2009 6:42 AM