Retouner des valeurs de variable d'un .bat a un code vb

nicobele Messages postés 5 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 12 septembre 2002 - 5 sept. 2002 à 22:45
grosminou_55 Messages postés 38 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 19 septembre 2006 - 4 avril 2006 à 13:34
bonjour,

Comment peut-on faire pour a partir d'un code vb appeler un .bat et faire en sorte de retourner une valeur de variable du .bat au code vb?

merci

6 réponses

cs_thitoune Messages postés 124 Date d'inscription mardi 19 février 2002 Statut Membre Dernière intervention 7 mars 2004 2
6 sept. 2002 à 00:33
La solution la plus simple est de mettre le résultat de ton script dans une variable :
set laVariable=leResultat

Et en vb :
resultat = environ("laVariable")
0
nicobele Messages postés 5 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 12 septembre 2002
6 sept. 2002 à 01:41
ca ne marche pas, voici mon programme test.bat en .bat:
@echo off

call test2.exe (lance un exe existant)
set variable=0

voici un bout du prog en vb:
Dim result As String

Call Shell("D:\ASYSInstalls\test.bat", vbNormalFocus)
result = Environ("variable")
If (result = "0") Then
Check1.Value = vbChecked
end if

et la valeur de result="", rien n'arrive!
je ne vois pas comment en mettant la commande "environ" le progr comprend qu'il faut alle chercher la variable ds le shell qui s'est executer.
Il faut que je declare variable?en quoi?
J'ai besoin de tes lumieres!!
Merci
0
cs_imer Messages postés 59 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 29 janvier 2004
6 sept. 2002 à 11:39
'C'est peut être un peu lourd mais vu mes capacités je ferais comme suit :
'Dans le .bat, ecrire le résultat de la variable dans un fichier txt
echo variable > c:\variable.txt
'Dans vb, lire le contenu du fichier txt
Dim fileNumber as Long
Dim variable
fileNumber = FreeFile
Open "c:\variable.txt" For Input As #fileNumber
Line Input #fileNumber, variable
Close #fileNumber
0
nicobele Messages postés 5 Date d'inscription mardi 31 octobre 2000 Statut Membre Dernière intervention 12 septembre 2002
12 sept. 2002 à 00:26
Merci, ca marche super bien!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_imer Messages postés 59 Date d'inscription vendredi 26 juillet 2002 Statut Membre Dernière intervention 29 janvier 2004
12 sept. 2002 à 12:03
Attention ! le problème est que vb lit dans le fichier text alors que le programme DOS n'est peut être pas encore terminé!
Tu peux attendre la fin du programme DOS via des API (http://www.vbfrance.com/forum.aspx?Article=41715) ou bien encore un truc lourding mais efficace :

'Dans VB
'Supprimer le fichier texte qui contient la variable
Kill "c:\variable.txt"

'Lancer le .bat
Call Shell("D:\ASYSInstalls\test.bat", vbNormalFocus)

'Lire le fichier texte seulement s'il a été créé par le .bat
Dim fileNumber as Long
Dim variable as String
Dim DebutExecution as Long
Dim GardeFou as Long 'Nombre de scondes au bout desquelles tu estimes que le programme DOS s'est planté et n'a pas pu créer le fichier texte

GardeFou = 120
DebutExecution = Timer

Do Until Timer - DebutExecution > GardeFou
DoEvents
If Dir("c:\variable.txt")<>"" Then
fileNumber = FreeFile
Open "c:\variable.txt" For Input As #fileNumber
Line Input #fileNumber, variable
Close #fileNumber
'On peut sortir de la boucle
Exit Do
End If
Loop
0
grosminou_55 Messages postés 38 Date d'inscription mardi 4 avril 2006 Statut Membre Dernière intervention 19 septembre 2006
4 avril 2006 à 13:34
s'est un peut lourd s'est vrais mais sa marche tres bien j'ai une disaine de variable gerer comme ca car j'ai pas trover d'autre moyen mais une petite astuce je les mais dans un ram disck au demarage et les suvgarde sur le disck dur a larret , ce qui permet d'avoir une reponce plus rapide lors que je les interoge puisqu 'elles son en ram l'inconvegnant s'est le temps de demarage et d'arret mais c'est pas mon souci pour moi tous du moin
0
Rejoignez-nous