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