Explication à propos de la fonction Run en vbs - VB/VBA/VBS - Programmation
Marsh Posté le 19-05-2005 à 19:30:43
En fait quand tu fait Run "qqch" le qqch en question est l'option que va faire le run.
En clair,
Si tu lui dis Run "C:\WINDOWS\Explorer.exe",
il va lancer C:\WINDOWS\Explorer.exe
Si tu lui dis Run "C:\Program Files\Dossier\Prog.exe",
il va chercher à lancer C:\Program et lui indiquer le(s) arguments, en l'occurance Files\Dossier\Prog.exe
Si tu lui dis Run """C:\Program Files\Dossier\Prog.exe"""
il va lancer C:\Program Files\Dossier\Prog.exe
Marsh Posté le 19-05-2005 à 20:04:40
Par contre, ce que je ne comprends pas c'est que, apparemment, il ne faille pas répéter les 3 guillemets à la fin.
Ou alors, faute de frappe (ou de copier/coller)???
Marsh Posté le 19-05-2005 à 20:37:04
Ca vient plus de windows que de VBS : regarde ce qui se passe quand tu crées un raccourci, si le chemin comporte un espace il faut encadrer le tout de guillemets, exactement comme ici.
Marsh Posté le 19-05-2005 à 20:38:52
merci knakes pour l'explication
j'avais penser à quelque chose comme çà mais sans être sûr
AlainTech j'ai tester avec """ ou " à la fin et çà marche dans les 2 cas.
D'après ce que je comprend du vbs maintenant et de l'explication de knakes :
c'est que les 2 premiers " indique que le 1er champ est vide, le " suivant ouvre la champ du chemin+fichier à lancer et le dernier " ferme çà, donc si on rajoute "" ensuite, bein çà doit rajouter un champ vide donc çà modifie rien.
mais c'est que une hypothèse d'un débutant donc je laisse les vrai pro du codage vbs le comfirmer.
Marsh Posté le 19-05-2005 à 20:53:21
nan. en fait run exécute une fonction windows (comme on le dit depuis plus haut mais en sous entendu).
Quand tu écris Run "machin", Windows va interpréter lancer machin.
Si il y a un espace dans la phrase, alors tu doit faire comprendre à windows que tu veux lancer toute la ligne
En réalité, si tu veux lancer 'C:\Program Files\qqch' tu dois écrire Run """C:\Program Files\qqch""" pour que WIndows l'interprète comme tel.
Si on décompose, il faut écrire ceci :
Run <guillemet><chemin avec espace><guillemets>
pour que windows lance <chemin avec espace>
le fait de mettre """ indique que tu fait : <"> et <chaine> ...
tu peux aussi faire cela : Run chr(34) & "Chemin avec espace" & chr(34)
en réalité : chr(34) = "
Marsh Posté le 19-05-2005 à 21:21:55
kioo a écrit : AlainTech j'ai tester avec """ ou " à la fin et çà marche dans les 2 cas. |
Je ne pense pas que ce soit cette explication.
3 guillemets servent à en forcer 1.
Pour reprendre l'explication de knakes:
Citation : Si tu lui dis Run "C:\WINDOWS\Explorer.exe", |
Par contre, la logique semble ne pas être respectée pour la fin de la ligne...
Curieuse logique à la Microsoft.
Edit --> Grilled (juste un peu)
Marsh Posté le 19-05-2005 à 21:39:00
Alain -> fouet ?
Marsh Posté le 19-05-2005 à 21:46:47
Tss, tss, tss
Pas pour un petit retard à l'allumage, quand même...
Marsh Posté le 19-05-2005 à 21:53:14
no no. je suis pas comme ca
Marsh Posté le 26-05-2005 à 09:18:01
rebonjour
j'ai un autre petit souci avec "Run"
en gros mon code qui foire c'est çà :
Code :
|
Mon problème dans tout çà est le suivant:
Il vient de la 1ere ligne: lancement_proeng = """F:\proe 2001""" si le chemin d'accès possède aucun espace, aucun souci, je faisait: lancement_proeng = "F:\proe2001" et tout marchait mais je dois m'assurer que çà marche quelque soit le chemin d'accès (avec ou sans espace, genre: F:\proe2001, F:\proe 2001, C:\Program Files\proe2001\ ...)
donc pour que le lancement du script cmd (shell.Run "Y:\Flo\proe2.cmd " & lancement_proeng) fonctionne avec les 2 bon paramètres (lancement_proeng puis config dont je ne parle pas, il influe pas sur le problème) j'ai mis entre """ ..... """ le chemin d'accès comme vous me l'avez expliqué précédement ce qui fait que çà prend bien en compte le paramètre lancement_proeng en 1 seul bloc et pas plusieurs à cause des espaces.
Mais alors la ligne (7) ne fonctionne pas : shell.Run lancement_proeng + "\bin\proe.bat"
au lieu de lancer le logiciel en démrrant le .bat, il ouvre une fenètre explorer au niveau du repertoire "F:\proe 2001", donc il ne prend pas en compte le \bin\proe.bat
J'ai cherché toute la journée hier une solution à çà mais je bloque, j'en conais pas assez en vbs
Merci
Marsh Posté le 26-05-2005 à 10:07:00
Première idée qui me vient:
Utilise 2 constantes.
1 avec guillemets et une sans (donc avec une seule paire de guillemets l'entourant)
Un peu bourrin, j'en conviens.
Si qq1 a une meilleure idée...
Marsh Posté le 26-05-2005 à 11:48:36
j'ai édité mon message parceque je nai pas été assez clair
même pour moi, j'ai du mal à saisir ce qui va ou pas donc quand je vous l'ai retranscrit, je me suis trompé
si les chemins d'acces etaient tous sans jamais d'espaces, une seule paire de "..." suffirait et tout marcherait
Mais il peut y avoir des espaces (Program Files par ex on doit faire ave !) donc je dois utiliser des triples """..."""
J'ai trouvé une solution mais bon çà fait solution du pauvre
j'initialise au début au même moment que
Code :
|
et à la fin je fait un
Code :
|
Mais je préferais pouvoir utiliser la variable lancement_proeng + "\bin\proe.bat" si c'est possible biensur
Si on peut pas bein on peut pas...
Marsh Posté le 26-05-2005 à 12:16:39
Je crois avoir trouvé la solution
Je sais pas pourquoi il suffit que je post un message ici pour que me vienne de nouvelles idée de solution alors que hier Nada
donc voilà ce que je viens de tester:
Code :
|
Et pour l'instant (je test toujours) çà me lance bien le proe2.cmd sans erreurs dans son exécution puis çà lance aussi le proe.bat
Marsh Posté le 26-05-2005 à 15:59:19
Bonne logique...
On peut difficilement supprimer des guillemets mais on peut facilement en ajouter.
Marsh Posté le 26-05-2005 à 17:29:53
solution alternative : il est probablement possible d'utiliser le nom de fichier court comme cela :
intreturn = WSHShell.Run("F:\proe20~1\bin\proe.bat",1,TRUE)
ça fonctionne au prompt, ça devrait fonctionner en vbs je pense.
Marsh Posté le 26-05-2005 à 18:02:24
oui. après ça retourne même un code : 0 tout va bien, sinon c'est une erreur d'exécution.
Marsh Posté le 05-09-2007 à 00:35:03
Bonsoir,
Je me permet de vous contacter car je viens de voir sur le forum que vous essayez de lancer ProE par une ligne de commande ce que j'ai fait par le biais d'un petit prog en vb6.
Ma question porte sur le fait de savoir si l'on peut par le biais d'une ligne de commande lancer ProE et le diriger vers un repertoire de travail (je veux lancer ProE et arriver directement sur mon repertoire de travail)?
Si vous avez une experience sur ce sujet j'en serais vivement interesse
Merci d'avance
RogBer
Marsh Posté le 19-05-2005 à 16:59:04
Bonjour
J'ai une question qui devrait être simple pour les personnes qui codent en VBS aisément, j'espère qu'ils pourront m'expliquer ceci:
Pouquoi faut-il mettre """ devant le chemin d'accès de fichier à lancer lorsque le chemin en question comporte un ou des espaces ?
J'ai galère avant de comprendre çà, parceque je faisait objWS.Run "C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe" et çà marchait pas alors que quand je testais objWS.Run "C:\AcroRd32.exe" çà marchait bien
J'aimerais donc avoir l'explication de quelqu'un qui sait coder en VBS, moi je débute et comme je suis en stage, j'aimerais bien comprendre tout ce que je code. Ya forcément une explication logique et nécéssaire donc je voudrais la connaitre pour éviter de me faire piéger là dessus lors de ma soutenance oral de stage
J'ai rien vu dans http://msdn.microsoft.com/library/ [...] MthRun.asp à propos de ce détail.
Merci
Message édité par kioo le 19-05-2005 à 17:03:25