El Blog de Gualtrysoft

Windows 2000/2003/2008, Active Directory, VBScript, Hyper-V, PowerShell y todo aquello interesante a la hora de usar, configurar y administrar Windows Server. También tenemos longanizas…

Script VbScript para añadir una carpeta a la variable de entorno Path

Posted by urpiano en Lunes 18 \18\+01:00 octubre \18\+01:00 2010

Este script recibe como parámetro una ruta de carpeta (si contiene espacios deberá estar encerrada entre comillas) y la añade a la variable de entorno Path del sistema.

Sintaxis

{wscript | cscript [//nologo]} agregar-a-path.vbs [/?] ruta

Siendo

Etiqueta Dato ¿Requerido? Descripción
  ruta
Ruta que se quiere agregar a la variable de entorno Path
?   No
Muestra la ayuda en línea.

Ejemplos:

– Se incluye la ruta “c:carpeta” a la variable de entorno %Path%:

wscript agregar-a-path.vbs "c:carpeta"

Nota: La nueva ruta no estará en el Path del sistema hasta que no se reinicie el equipo:

Este es el código del script

'*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
'*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*
'* agregar-a-path.vbs                                                  *
'*                                                                     *
'* Este script recibe como parámetro una ruta de carpeta (si contiene  *
'* espacios deberá estar encerrada entre comillas) y la añade a la     *
'* variable de entorno Path.                                           *
'*                                                                     *
'* Sintaxis                                                            *
'*                                                                     *
'* {wscript | cscript [//nologo]} agregar-a-path.vbs [/?] ruta         *
'*                                                                     *
'* Siendo                                                              *
'*                                                                     *
'* - ruta (Requerido):                                                 *
'*         Ruta que se quiere agregar a la variable de entorno Path    *
'*                                                                     *
'* - /?: ayuda (Opcional):                                             *
'*         Muestra la ayuda en línea                                   *
'*                                                                     *
'*                                                                     *
'* Ejemplos:                                                           *
'*                                                                     *
'* - Se incluye la ruta "c:\carpeta" a la variable de entorno %Path%:  *
'*                                                                     *
'* wscript agregar-a-path.vbs "c:\carpeta"                             *
'*                                                                     *
'*                                                                     *
'*                                                                     *
'*                                                                     *
'* © Fernando Reyes                                                    *
'* Octubre De 2010                                                     *
'*°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°*
'*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*

'Exigimos la declaración de variables
Option Explicit

Dim str_Error 'As String
Dim int_Error 'As String
Dim str_Ruta  'As String
Dim str_Path  'As String
Dim obj_FS    'As Scripting.FileSystemObject
Dim obj_SH    'As WScript.Shell

'Validando los argumentos y almacenando
'sus valores
If f_RevisarArgumentos( _
                       str_Error, _
                       int_Error) Then

    Call s_Ayuda(str_Error)
    WScript.Quit int_Error

End If

'Creamos un objeto FileSystemObject
Set obj_FS = CreateObject("Scripting.FileSystemObject")

'Creamos un objeto wshShell
Set obj_SH = CreateObject("WScript.Shell")

'Obtenemos el valor actual de la variable de entorno Path
str_Path = obj_SH.RegRead("HKLM\SYSTEM\CurrentControlSet\" & _
					"Control\Session Manager\Environment\Path")

wscript.echo "Ruta: " & str_ruta

If Not f_YaEnRuta(str_Path, str_Ruta) Then

    'Agregamos al Path actual la ruta recibida como parámetro
    str_Path = str_Path & ";" & str_Ruta

    wscript.echo "Path: " & str_path

    'Escribimos el nuevo path en el registro
    obj_SH.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\" & _
				"Session Manager\Environment\Path",str_Path, "REG_SZ"

Else

    WScript.Echo "Ya existe esa carpeta en el Path del sistema"

End If

'Limpieza de culete :-)
Set obj_SH = Nothing
Set obj_FS = Nothing

Function f_YaEnRuta(str_Ruta, str_Carpeta)
'***********************************************************************
'* Procedimiento: f_YaEnRuta                                           *
'* Tipo         : Función                                              *
'* Devolución   : Booleana                                             *
'* Fecha y Hora : 24/08/2009 9:43:53                                   *
'* Autor        : Fernando Reyes                                       *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito    : Esta función recibe una cadena que es una serie de   *
'*                rutas de carpetas concatenadas por punto y coma, tal *
'*                y como es la variable PATH del sistema. Recibe, así  *
'*                mismo la ruta de una carpeta. La función revisa si   *
'*                la carpeta recibida está en la cadena con las        *
'*                diferentes carpetas, devolviendo True en caso        *
'*                afirmativo y False si no está presente.              *
'***********************************************************************

    Dim arr_Ruta
    Dim str_Elemento

    f_YaEnRuta = False

    arr_Ruta = Split(str_Ruta,";")

    For Each str_Elemento In arr_Ruta

        If LCase(str_Carpeta) = LCase(str_Elemento) Then
 
            f_YaEnRuta = True
            Exit Function
        
        End If

    Next 'str_Elemento

End Function

Function f_RevisarArgumentos( _
                             str_Error, _
                             int_Error _
                             ) 'As Boolean
'***********************************************************************
'* Procedimiento: f_RevisarArgumentos                                  *
'* Tipo         : Función                                              *
'* Devolución   : Booleana                                             *
'* Fecha y Hora : 13/08/2008 8:52:53                                   *
'* Autor        : Fernando Reyes                                       *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito    : Esta función revisa los argumentos recibidos,        *
'*                recogiendo los posibles fallos por falta de          *
'*                argumentos requeridos y almacenando en las           *
'*                variables correspondientes los argumentos            *
'*                recibidos. recibe dos parámetros cuyo fin es ser de  *
'*                salida: una cadena que almacenará los errores        *
'*                detectados y un entero que almacenará el código de   *
'*                los errores detectados. Hay tres tipos de error;     *
'*                error 1 para los argumentos sin nombre requeridos y  *
'*                no encontrados, error 2 para los argumentos con      *
'*                nombre requeridos y no encontrados, por último,      *
'*                error 4 para los combos de argumentos opcionales     *
'*                (un combo de argumentos opcionales es aquel          *
'*                conjunto de argumentos opcionales que es requerido   *
'*                que se pase al menos uno de ellos y que si se pasa   *
'*                más de uno se ignorarán aquellos que estén detrás    *
'*                en la prioridad entre ellos; una característica      *
'*                clara de lo que es un combo de argumentos es cuando  *
'*                dos omás argumentos almacenan su valor en la misma   *
'*                variable). En el caso de producirse más de un tipo   *
'*                de error, el número de error será la suma de ambos   *
'*                de los errores recibidos, es decir 3, 5 o 6          *
'***********************************************************************

    Dim bol_Devolucion 'As Boolean
    Dim bol_Error1 'As Boolean
    Dim bol_Error2 'As Boolean
    Dim bol_Error4 'As Boolean

    'Iniciamos los indicadores
    bol_Devolucion = False
    bol_Error1 = False
    bol_Error2 = False
    bol_Error4 = False

    'Si hay que mostrar la ayuda, se muestra y
    'termina el script
    If WScript.Arguments.Named.Exists("?") Then

        Call s_Ayuda("******************" & vbCrLf & _
                     "*     AYUDA      *" & vbCrLf & _
                     "******************")

        WScript.Quit 0

    End If

    'Revisamos si están todos los argumentos
    'sin nombre requeridos
    If WScript.Arguments.Unnamed.Count < 1 Then

        str_Error = "Error 1, falta/n argumento/s sin " & _
                    "nombre requerido/s"
        bol_Error1 = True

    Else

		'Guardamos los argumentos en las variables
		'correspondientes
		str_Ruta = WScript.Arguments.Unnamed(0)

		'Comprobamos que la ruta existe en el sistema.
		'Para ello utilizaremos un objeto FileSystemObject
		Dim obj_FS

		'Creamos el objeto FileSystemObject
		Set obj_FS = CreateObject("Scripting.FileSystemObject")

		'Si la ruta no existe lo marcaremos como error
		If Not obj_fs.FolderExists(str_Ruta) Then

			str_Error = "Error 2, la ruta """ & str_Ruta & _
						""" recibida como parámetro no existe."

			bol_Error2 = True

		End If

    End If

    'Preparamos las variables de devolucion:
    'el entero como suma de los posibles errores 1, 2 y 4
    int_Error = Abs(bol_Error1) + _
                (2 * Abs(bol_Error2)) + _
                (4 * Abs(bol_Error4))
    'La devolucion de la función será True en caso de
    'haber alguno de los errores
    bol_Devolucion = (bol_Error1 Or bol_Error2 Or bol_Error4)

    'Hacemos la devolución de la función
    f_RevisarArgumentos = bol_Devolucion

End Function 'f_RevisarArgumentos

Sub s_Ayuda(str_Error)
'***********************************************************************
'* Procedimiento: s_Ayuda                                              *
'* Tipo         : Sub                                                  *
'* Devolución   :                                                      *
'* Fecha y Hora : 13/08/2008 8:52:53                                   *
'* Autor        : Fernando Reyes                                       *
'*¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯*
'* Propósito    : Este procedimiento muestra la ayuda en línea.        *
'*                Recibe un parámetro de tipo cadena que si viene      *
'*                será mostrado antes de la línea; pensado para que    *
'*                se muestre un error que se haya detectado.           *
'***********************************************************************

    'Si hay que mostrar algún texto previo a la ayuda, lo hacemos
    If Len(str_Error) > 0 Then

        WScript.Echo str_Error & vbCrLf & vbCrLf

    End If

    'A continuación, mostramos la ayuda por pantalla
    WScript.Echo "Este script recibe como parámetro una ruta de car" & _
                 "peta (si contiene espacios"
    WScript.Echo "deberá estar encerrada entre comillas) y la añade" & _
                 " a la variable de entorno"
    WScript.Echo "Path."
    WScript.Echo ""
    WScript.Echo "Sintaxis"
    WScript.Echo ""
    WScript.Echo "cscript [//nologo] agregar-a-path.vbs [/?] ruta"
    WScript.Echo ""
    WScript.Echo "Siendo"
    WScript.Echo ""
    WScript.Echo "- ruta (Requerido):"
    WScript.Echo "Ruta que se quiere agregar a la variable de entor" & _
                 "no Path"
    WScript.Echo ""
    WScript.Echo "- /?: ayuda (Opcional):"
    WScript.Echo "Muestra la ayuda en línea"
    WScript.Echo ""
    WScript.Echo ""
    WScript.Echo "Ejemplos:"
    WScript.Echo ""
    WScript.Echo "- Se incluye la ruta ""c:\carpeta"" a la variable" & _
                 " de entorno %Path%:"
    WScript.Echo ""
    WScript.Echo "cscript agregar-a-path.vbs ""c:\carpeta"""
    WScript.Echo ""
    WScript.Echo ""
    WScript.Echo ""

End Sub 's_Ayuda

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: