lancement d'un .vbs dans un .bat

lancement d'un .vbs dans un .bat - Shell/Batch - Programmation

Marsh Posté le 28-09-2006 à 15:30:58    

Bonjour,
 
J'ai besoin de lancer un .vbs dans un .bat
Il faut que le .vbs ait fait son boulot avant de continuer le .bat en séquence
Tout ce que j'ai trouvé (il y aurait-il une autre manière de faire ?) c'est
-soit de faire cscript prog.vbs
-soit de faire start /W prog.vbs
 
Ca marche, mais le problème, c'est qu'une fois que le vbs arrive à la fin, il faut attendre presque 10 secondes avant que ça continue
 
Y'a qq chose à faire, please ?

Reply

Marsh Posté le 28-09-2006 à 15:30:58   

Reply

Marsh Posté le 28-09-2006 à 15:46:22    

comment ça tu dois attendre 10 secondes ?
 
il fait quoi ton vbs ?
 
tu déclarerais pas des millions d'objets de 1 Go chacun comme un goret par hasard ? genre le script a fini, oui, mais l'environnement de script doit se palucher le nettoyage de tout un tas de bordel que t'as laisse en mémoire ?
 
parceque moi j'ai jamais remarqué la moindre lenteur avec ce système...

Message cité 1 fois
Message édité par MagicBuzz le 28-09-2006 à 15:48:24
Reply

Marsh Posté le 28-09-2006 à 16:12:01    

MagicBuzz a écrit :

comment ça tu dois attendre 10 secondes ?
 
il fait quoi ton vbs ?
 
tu déclarerais pas des millions d'objets de 1 Go chacun comme un goret par hasard ? genre le script a fini, oui, mais l'environnement de script doit se palucher le nettoyage de tout un tas de bordel que t'as laisse en mémoire ?
 
parceque moi j'ai jamais remarqué la moindre lenteur avec ce système...


 
C'est pas impossible que ça soit de la programmation de goret, car ce n'est pas mon domaine. Alors je suis vraiment preneur de conseil.
Voilà le script vbs :
Dim WshNetwork  
Dim WshShell
 
Set WshShell = WScript.CreateObject("WScript.Shell" )
strKeyPath = "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\ComputerName"
strComputerName = WshShell.RegRead(strKeyPath)
 
 
WshShell.RegWrite "HKCU\SOFTWARE\SOL\hexawin\poly_user","psv" & right(strComputerName,3), "REG_SZ"  
 
Le .vbs n'est composé que de ces 4 lignes, juré.
 
J'explique en 2 mots ce que j'essaie de faire :
-lire le nom du pc dans la BDR (je ne peux pas utiliser directement %computername% dans le .bat parceque ça doit marcher sur un parc de postes hétérogènes 98, nt4 et xp !)
-prendre les 3 derniers caractères du nom du pc (c'est un nombre), et mettre à jour la BDR dans une autre clé en utilisant ce nombre concaténé à la chaîne psv
 
Je passe par un vbs car je n'arrive pas à lire la valeur d'une clé directement en .bat.
Il y a bien reg QUERY, mais ça rend tout un baratin et je ne sais pas récupérer le contenu de la clé seul (si tu as la solution, je prends avec très grand plaisir)
 
Le .bat de test, il ne fait que 2 lignes :
cscript \\servtse\scripts\initreghexa.vbs
pause
 
et quand je le lance, je compte environ 10 secondes (je n'ai pas chronométré, mais à 1 sec près c'est ça), avant de tomber sur le message de pause
J'avais mis un message en fin du .vbs pour m'assurer que ce n'est pas l'écriture dans la BDR qui durait, mais non, c'est instantané.
C'est le passage de témoin entre le vbs et le bat qui dure
 
J'ai oublié de préciser que ça me fait ça quand ça tourne sur un xp. Sur un 98, pas de pb


Message édité par rogntudjuuu le 28-09-2006 à 16:21:34
Reply

Marsh Posté le 28-09-2006 à 16:33:11    

Une idée ?

Reply

Marsh Posté le 28-09-2006 à 16:34:24    

c'est très étrange en effet...
 
tu ne détruit pas ton objet "proprement", mais vu qu'il n'y en a qu'un ça devrait pasêtre gênant... bizarre que ça mette autant de temps :??:
 
je vais faire des tests tout à l'heure pour voir...

Reply

Marsh Posté le 28-09-2006 à 17:16:20    

Re.
 
Je viens de faire ce test :
test.vbs


Dim a, b
 
a = 3
b = 2
 
MsgBox CStr(a * b)


 
test.bat


pause
start /W test.vbs
pause


 
 
Dis-moi ce que ça fait.
 
Chez moi j'ai tout de suite "appuyez sur une touche".
Ensuite, j'attends 2 ou 3 secondes le temps que WScript démarre.
Puis j'ai l'alerte qui s'affiche.
Et immédiatement après, j'ai le second message "appuyez sur une touche".
 
A mon sens, la lenteur que tu remarques est putôt au démarrage non ?
Ce qui est relativement logique, puisqu'il doit démarrer l'environnement de script pour démarrer le VBS...
 
En tout cas, je confirme ce que je disais : à la fin du script, c'est censé être immédiat, et chez moi ça dure clairement pas 10 secondes :??:

Reply

Marsh Posté le 29-09-2006 à 08:46:28    

Je reprends ce matin..
Je viens de faire le test.
C'est dingue. Chez moi c'est exactement le contraire !
Une fois validé le 1er 'pause', la boîte avec le résultat de la multiplication apparaît quasi immédiatement.
Quand on valide le 'OK', j'attends 10 secondes avant de tomber sur le 2ème 'pause'
Le point positif, c'est que ça calcule juste :-)
Le négatif, outre que ça ne fait pas avancer le schmilblick, c'est que 10 secondes c'est long, mais pas assez pour aller boire un café !
 
Plus haut, tu disais que je ne supprimais pas l'objet.
Peut-être que ça arrangerait les choses.
Mais je ne sais pas comment il faut faire.
Peux-tu me l'indiquer ?
Merci


Message édité par rogntudjuuu le 29-09-2006 à 08:48:38
Reply

Marsh Posté le 29-09-2006 à 08:47:35    

MagicBuzz a écrit :

Re.
 
Je viens de faire ce test :
test.vbs


Dim a, b
 
a = 3
b = 2
 
MsgBox CStr(a * b)


 
test.bat


pause
start /W test.vbs
pause


 
 
Dis-moi ce que ça fait.
 
Chez moi j'ai tout de suite "appuyez sur une touche".
Ensuite, j'attends 2 ou 3 secondes le temps que WScript démarre.
Puis j'ai l'alerte qui s'affiche.
Et immédiatement après, j'ai le second message "appuyez sur une touche".
 
A mon sens, la lenteur que tu remarques est putôt au démarrage non ?
Ce qui est relativement logique, puisqu'il doit démarrer l'environnement de script pour démarrer le VBS...
 
En tout cas, je confirme ce que je disais : à la fin du script, c'est censé être immédiat, et chez moi ça dure clairement pas 10 secondes :??:


Reply

Marsh Posté le 29-09-2006 à 09:59:44    

Nan, mais si le code de mon exemple te fait toujours attendre 10 secondes chez toi, c'est pas un souci d'objet, puisque moi je ne déclare que 2 variables toutes bêtes dans mon code.
 
J'imaginais juste qu'au départ tu utilisais des objets de parcours de fichiers ou de bases de données, volumineux, et que tu ne détruisait pas proprement : obj.Close() suivit de Set obj = Nothing
Mais dans ton cas c'est clairement pas le cas, puisque tu n'utilises qu'un seul objet (bon, ceci dit, la BDR c'est toujours un peu lent à refermer). Que le script ferme proprement l'objet ou non ne devrait rien changer du coup.
 
Tu utilise quelle version de Windows ? Avec quelle version d'Internet Explorer ?
 
Parceque l'environnement de scrit dépend de la version de Windows, mais aussi d'Internet Explorer (puisque IE s'en sert pour éxécuter les JS dans les sites web, il le met à jour).
 
Ah, j'oubliais : utilises-tu un antivirus ? Genre un VBS qui accède à la BDR, ça ne m'étonnerait pas que ça faisse devenir parano n'importe quel antivirus.
 
Pour info, j'ai fait mon test sous Windows 2003 avec IE7RC1 sur un PM 1.5 GHz / 512 DDR
 
Donc à la base je suis pas dans les meilleurs conditions pour tester (un OS surconsommateur, et une version béta de l'interpréteur de scripts sur un portable ashmatique...)
 
Essaie de tester ton script sur un environnement sensiblement différent du tiens. Pour moi en tout cas c'est surtout un problème sur ta machine en particulier.

Reply

Marsh Posté le 29-09-2006 à 10:48:24    

Sur les vieux pc en 98 poussifs qu'on a, ça marche super bien.
Les XP sur lesquels j'ai le pb (c'est tous les mêmes), sont des P4 3GHz, avec 256 DDR, en XP 2002 Pro SP 2, à jour avec Wupdate et utilisant IE 6
J'essayerai ce soir chez moi sur ma machine perso

Reply

Marsh Posté le 29-09-2006 à 10:48:24   

Reply

Marsh Posté le 29-09-2006 à 10:52:43    

J'oubliais : l'antivirus est McAfee.
J'ai essayé en le désactivant, mais ça ne change rien.
De toutes façons, c'est pas l'accès à la BDR le pb puisqu'effectivement c'est pareil avec le petit test a * b

Reply

Marsh Posté le 29-09-2006 à 11:31:04    

c'est vraiment étrange tout ça...
 
verrai ce que ça donne aussi sur ma machine perso (xp home)

Reply

Sujets relatifs:

Leave a Replay

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