Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1304 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Script VBS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script VBS

n°2137684
Eysinem
Posté le 19-04-2012 à 16:52:54  profilanswer
 

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.

mood
Publicité
Posté le 19-04-2012 à 16:52:54  profilanswer
 

n°2137693
Riokmij
Blink and you're dead
Posté le 19-04-2012 à 17:01:54  profilanswer
 

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.

n°2137718
olivthill
Posté le 19-04-2012 à 17:28:19  profilanswer
 

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"

n°2137722
Riokmij
Blink and you're dead
Posté le 19-04-2012 à 17:37:27  profilanswer
 

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).

n°2137733
olivthill
Posté le 19-04-2012 à 17:53:18  profilanswer
 

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
n°2137735
Eysinem
Posté le 19-04-2012 à 17:54:33  profilanswer
 

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.

n°2139225
CK Ze CaRi​BoO
Posté le 26-04-2012 à 14:32:56  profilanswer
 

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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Script VBS

 

Sujets relatifs
description script intégration domaine VBS[VBS] Script pour attribuer un bac à une imprimante
[VBS] Récupération d'une valeur créée par le scriptPetit soucis de script VBS
[VBS] script pour copier un fichier de serveur vers un client[PHP/XML] Problème pour trouver le code PHP à partir du code VBS
[VBS][RESOLU][SCRIPT]Script de suppression de fichiers temporaires[VBS] Creer un script de lecteur réseau utilisateurs
Script VBS + message d'attente 
Plus de sujets relatifs à : Script VBS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR