Bon, c’est pas mal pour quelqu’un qui n’avait pas touché au vbs !
Tu es obligé d’ajouter 2 parce que tu as besoin d’obtenir “c:\general” or dans racine on avait stocké “c:\general”
Donc il faut ajouter “” (soit 1 caractère), mais dans la mémoire le caractère spécial “” est doublé, il faut donc obtenir “C:\general\” or dans la mémoire on a : “c:\general” (+ “\” = + 2 caractères).
Par contre je ne suis pas sur à 100% que ton script fonctionnera à chaque fois. Mais bon, pas le temps de tester dans le détail.
Personnellement, je ferais ceci :
la ligne
nomrep = Replace(objFolder.Name, racine & "\", "")
ne fonctionnait pas car “Replace” différencie la casse (c: est différent de C:) donc il ne trouvait pas “C:\general” parce qu’il fallait chercher “c:\general”.
Une solution très rapide aurait été de virer la majuscule au moment de l’initialisation de la variable racine = “c:\general”…
Mais… bon comment être sur que ça marchera tout le temps ?
Donc une meilleure solution consiste à aller chercher les informations où elles seront forcément bonnes, on va donc écrire :
Nomrep = Replace(objFolder.Name, objFolder.drive & objFolder.path, "")
Comme objfolder.drive = “c:” et objfolder.path = “\general” on reconstitue le “c:\general” que l’on souhaitait obtenir.
Pour tes autres questions :
Oui il est préférable de déclarer les variables.
Et tu peux ajouter aussi:
option explicit tout en haut de ton script, (ça oblige à déclarer les variables => ça donne une erreur si tu essaies d’utiliser une variable sans l’avoir déclarée)
C’est préférable pour détecter les erreurs dans les noms de variable (style tu utilises la variable “tmp” alors qu’à un autre endroit tu utilises “temp” : pas facile de s’en rendre compte quand le script est long… là au moins ça plantera.)
Il faut aussi normalement fermer les objets (ceux déclarés par “Set”) que tu as utilisé : exemple dans ton cas :
à la fin du script tu marques :
Set wshell = nothing
pareil pour les autres.
Edité le 10/07/2008 à 16:24