Script VBS

Script VBS - VB/VBA/VBS - Programmation

Marsh Posté le 19-04-2012 à 16:52:54    

Bonjour,  
J'aurais besoin de votre aide pour la création d'un script VBS.
 
Objectif  : Lancer un exécutable si un dossier n'existe pas.
Je souhaite lancer le logiciel gérant les signatures Outlook si un dossier n'existe pas.
Voici ce que j'ai fait :

Code :
  1. Option explicit
  2. Set WshNetwork = WScript.CreateObject("WScript.Network" )
  3. Set objFSO = CreateObject("Scripting.FileSystemObject" )
  4. Set Wshell = CreateObject("WScript.Shell" )
  5. Dim objFSO, Nom_Utilisateur, WshNetwork, Wshell
  6. Nom_Utilisateur = WshNetwork.Username
  7. If objFSO.FolderExists("C:\Documents and Settings\"&Nom_Utilisateur&"\Application Data\Microsoft\Signatures" ) = false Then
  8. Wshell.Run "\\srv-fic\Public\MARKETING\Signature Outlook\ExSync.exe"
  9. End If


Sur celui-ci j'ai deux problèmes, le premier étant l'espace dans le chemin "\\srv-fic\Public\MARKETING\Signature Outlook\ExSync.exe".
Il m'indique que l'élément est introuvable, comment puis-je utiliser ce chemin d'accès avec l'espace dedans ?
 
Le deuxième étant celui-ci :
L'emplacement du dossier à vérifier diffère entre XP et Seven.
Sur XP, c'est l'emplacement ci-dessus, et sur Seven c'est l'emplacement ci-dessous :
"C:\Users\"&Nom_Utilisateur&"\AppData\Roaming\Microsoft\Signatures"
 
Je pensais laisser le script comme il est, mais à ce moment là l'exécutable sera lancé à chaque fois sous Seven. Puisqu'il ne trouvera jamais le dossier.
 
Merci d'avance pour vos réponses.

Reply

Marsh Posté le 19-04-2012 à 16:52:54   

Reply

Marsh Posté le 19-04-2012 à 17:01:54    

Pour ton problème d'espace, tu peux essayer de mettre ton chemin entre guillemets (en plus de ceux de vbscript), ça donnerait ça : """\\srv-fic\Public\MARKETING\Signature Outlook\ExSync.exe"""
 
Pour ton deuxième problème : tu pourrais tester l'existence des 2 répertoires, et lancer l'application si aucun n'existe.

Reply

Marsh Posté le 19-04-2012 à 17:28:19    

D'habitude pour les guillemets, j'écris chr(34), par exemple

If objFSO.FolderExists("C:\" & chr(34) & "Documents and Settings" & chr(34) & "\" & Nom_Utilisateur & "\" & chr(34) & "Application Data" & chr(34) & "\Microsoft\" & chr(34) & "Signatures" ) = false Then
Wshell.Run "\\srv-fic\Public\MARKETING\" & chr(34) & "Signature Outlook" & chr(34) & "\ExSync.exe"

Reply

Marsh Posté le 19-04-2012 à 17:37:27    

Je trouve plus lisible de simplement les doubler quand on est à l'intérieur d'une chaine de caractères, mais ça marche aussi avec chr(34).

Reply

Marsh Posté le 19-04-2012 à 17:53:18    

Oui la lisibilité est un critère très important, je suis d'accord.
Mais il y en a un autre qui l'est encore un poil plus qui est le bon fonctionnement.
 
Le doublement des apostrophes est une solution en langage SQL, mais je ne savais pas que le doublement des guillemets en serait une en langage VB.
Pour en avoir le coeur net, je viens d'écrire ce programme de test :

wscript.echo "bonjour " & Chr(34) & "toi" & Chr(34)
wscript.echo "bonjour ""moi"""

La première ligne passe sans problème.
Edit : Et la deuxième ligne passe aussi. Super !


Message édité par olivthill le 19-04-2012 à 17:54:12
Reply

Marsh Posté le 19-04-2012 à 17:54:33    

D'abord merci pour vos réponses rapides.
 
Que je mette les double guillemets ou & chr(34) cela ne fonctionne pas  :sweat:  
 
Pour info, le chemin d'accès au dossier à vérifier fonctionne avec un seul guillemet au début et à la fin.

Reply

Marsh Posté le 26-04-2012 à 14:32:56    

Pour ton problème de chemin du dossier Application Data, tu as une variable d'environnement %APPDATA%, qui devrait t'envoyer au bon endroit sous XP ET sous Seven.
 
Tu peux extraire une variable d'environnement de la façon suivante:
 
Set objShell = WScript.CreateObject("WScript.Shell" )
AppDataPath = objShell.ExpandEnvironmentStrings("%AppData%" )
 
Edit: j'ajoute qu'au pire tu peux détecter avec VBS la version de l'OS qui exécute le script et conditionner le code au résultat obtenu à ce test.


Message édité par CK Ze CaRiBoO le 26-04-2012 à 14:39:26

---------------
The only thing necessary for the triumph of evil is for good people to do nothing.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed