Monter / Démonter / Contrôler des lecteurs réseaux [VBS] - VB/VBA/VBS - Programmation
Marsh Posté le 23-06-2011 à 15:45:42
Je pense que tu te prends la tête pour pas grand chose, pourquoi aller tester s'il existe si c'est seulement pour le recréer ?
Enfin du moins avec ton algo, car ton algo ne correspond pas au code que tu as pondu. Sur ton algo tu n'utilises que le lecteur reseau R, sur ton code tu utilises R et S...
Si je pars sur ton algo, tu le démontes, tu le remontes, point.
Une gestion d'erreur pour éviter de démonter s'il n'existe pas, et basta.
Code :
|
Avec ton code, même si je ne pige pas pourquoi R et S pointerait au même endroit si R n'existe pas...
Des fois, au lieu de vouloir pondre un algo, l'expliquer en Français c'est mieux
Au cas où tu te sois trompé, et que tes deux lecteurs reseaux pointent à deux endroits differents, je le prends en compte en spécifiant des variables contenant le chemin vers R (CheminReseauR) et S (CheminReseauS) doivent pointer.
Code :
|
Marsh Posté le 23-06-2011 à 16:00:49
Oui en effet je me suis un peu emmêler les pinceaux dans mes lecteurs
Je ré-explique en français donc.
J'ai aujourd'hui un lecteur r: qui pointe vers une cible, on la nommera CheminReseau1.
Désormais il faut que ce même lecteur pointe vers une autre cible, CheminReseau2.
Oublions le lecteur s:, que j'avais utilisé temporairement pour mon CheminReseau2.
Je veux donc :
1- Voir si r: existe
2- Si il existe : voir si il pointe vers CheminReseau1.
3- Si oui, le démonter puis le remonter de suite vers CheminReseau2.
4- Si il n'existe pas, monter r: vers CheminReseau2.
Je pense donc que je peux reprendre ton code, et changer seulement le lecteur en ligne 24, et supprimer l'affectation en ligne 5.
Sinon ta proposition de code me semble logique étant donné ce que je veux faire.
Tu aurai fait différemment ?
Marsh Posté le 23-06-2011 à 16:20:06
Perso, je me foutrais totalement de savoir le chemin d'origine de R:
Je démonte et je remonte, peu importe si R: est bon ou pas.
Donc je mettrais le 1er code.
Après si tu veux faire ca plus "proprement" en testant le chemin d'origine, faut modifier un peu le code :
Code :
|
Marsh Posté le 23-06-2011 à 16:27:37
Oui je préfère autant faire ça proprement quitte à le faire.
C'est vrai que démonter et remonter à chaque coup, je l'avais, mais je ne trouve pas cela super optimisé.
Après quelles perte au démarrage de Windows lorsque le script se lance ... ok tu as raison ce doit être infime !
Malgré tout, maintenant que tu t'es donné la peine de m'aider, je vais prendre ton code, histoire que tu n'es pas perdu ton temps hein.
En tout cas merci beaucoup !
Marsh Posté le 23-06-2011 à 17:10:33
Bon je reviens à la charge encore un peu.
C'est bizarre mais quand je met les deux instructions ci dessous à la suite dans mon If (après avoir tester si le chemin est différent ...), elles ne s'exécutent pas.
Code :
|
Il ne se passe rien, mon r: n'est ni démonté, ni remonté.
Par contre, si je ne met que la commande qui démonte le lecteur, là le lecteur se démonte bien.
Et pour me faire encore plus douter, si je démonte le r: et que je remonte un lecteur sous une autre lettre (s: par ex.) là le r: est démonté, et le s: est monté ...
Code :
|
C'est en tain de me rendre chèvre, je vais travailler avec le lecteur S: je crois et ça va régler pas mal de problème et faire gagner du temps à tout le monde !
Finalement, et à mon grand regret, je vais peut être la jouer moins délicatement !
Marsh Posté le 23-06-2011 à 10:56:16
Bonjour,
Je fais appel à vous aujourd'hui car je bloque sur script.
Voici le pseudo algo de ce que je souhaite faire :
si r: existe alors
si r: != \\serveur1\partage1\ alors
demonte lecteur r:
monte lecteur r: == \\serveur1\partage1\
fin si
sinon
monte lecteur r: == \\serveur1\partage1\
fin si
Voici ce que je suis arrivé à pondre :
Set NT = WScript.CreateObject("WScript.Network" )
If NT.DriveExists("R:" ) THEN
If ''r: != \\serveur1\partage1\ alors
NT.RemoveNetworkDrive "R:", bForce, true
NT.MapNetworkDrive "R:","\\serveur1\partage1\","True"
End If
Else
NT.MapNetworkDrive "S:","\\serveur1\partage1\","True"
End If
Vous comprendrez bien vite que je ne suis pas développeur
Mon blocage est à la ligne 3, je ne sais pas comment récupérer le chemin de mon lecteur pour tester si il est égal à une chaîne de caractère.
Alors je présume qu'avant de lancer le If, il fait récupérer le chemin du r: dans une variable pour la comparer ensuite à la chaîne de caractère, mais je ne sais pas le faire.
Merci pour votre aide !
Mathieu
Message édité par lopezmathieu le 23-06-2011 à 10:57:45