Optimisation du Path [VBS][SOURCE] - VB/VBA/VBS - Programmation
Marsh Posté le 28-11-2005 à 17:00:53
Bienvenue dans le club des pogrammeurs de VBS, et merci pour ce script intéressant.
Marsh Posté le 29-11-2005 à 10:55:03
olivthill a écrit : |
Merci beaucoup pour cet accueil.
Je n'ai pas la prétention de me dire "programmeur" , "scripteur" que conviendrait mieux mais ça me fait bien plaisir.
J'invite bien sur tout le monde à poster ses petits scripts, avec un peu de commentaires pour que les débutants comme moi puissent les lire et s'en inspirer pour apprendre à scripter mieux.
Marsh Posté le 28-11-2005 à 16:25:35
Sur les serveur Windows 2003 la Variable Path connait certaines limitations. Entre autres, certains chemins doivent impérativement se trouver au Début de la variable (a priori dans les 1024 premiers caractères) sous peine de quoi les services qui s'y attachent ne pourront pas démarrer.
Je recontre souvent ce problème avec les serveurs Citrix : certaines applis positionnent leur entées PATH au début de la variable et non à la fin. Au boot suivant les services Citrix ne montent plus.
J'ai donc créé ce petit script VBS qui permet de remettre le PATH à l'équerre : les entrées Majeures sont foncées en début de chemin puis on y ajoute le reste en supprimant les doublons.
C'est mon premier script VBS , donc toute critique constructive est la bienvenue
Set shell = WScript.CreateObject( "WScript.Shell" )
Set O_EnvVarSyst = shell.Environment("System" )
Set O_EnvVarProc = shell.Environment("Process" )
Set O_Compare = New RegExp
Str_SystemRoot = O_EnvVarSyst("WinDir" )
'On extraie la variable %PATH%
Str_Path = O_EnvVarSyst("Path" )
'On remplace la valeur de %SYSTEMROOT% par le nom de cette même variable
Str_Path = Replace(Str_Path, O_EnvVarProc("SystemRoot" ), "%SystemRoot%",1,-1,1)
'On vire les \ inutiles
Str_Path = Replace(Str_Path, "\;", ";" )
'Le plus important, on positionne les premières entrées à la main
Str_NewPath = "%SystemRoot%;%SystemRoot%\SYSTEM32"
T_ActualPath = split(Str_Path,";" )
Lng_Nombre = (UBound(T_ActualPath))
for i=0 to Lng_Nombre
Lng_Find = Instr(1,UCase(Str_NewPath),UCase(T_ActualPath(i)) & ";" )
If Lng_Find = 0 Then
Str_NewPath = Str_NewPath & ";" & T_ActualPath(i)
End If
next
Str_NewPath = Replace(Str_NewPath, O_EnvVarProc("SystemRoot" ), "%SystemRoot%",1,-1,1)
O_EnvVarSyst("Path" )=Str_NewPath
Edit : Quelques commentaires
Message édité par madmartigan le 28-11-2005 à 16:30:32
---------------
Mieux vaut fermer sa gueule et passer pour un con, plutot que de l'ouvrir, et montrer qu'on l'est...