Retouner des valeurs de variable d'un .bat a un code vb
nicobele
Messages postés5Date d'inscriptionmardi 31 octobre 2000StatutMembreDernière intervention12 septembre 2002
-
5 sept. 2002 à 22:45
grosminou_55
Messages postés38Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention19 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
A voir également:
Retouner des valeurs de variable d'un .bat a un code vb
nicobele
Messages postés5Date d'inscriptionmardi 31 octobre 2000StatutMembreDernière intervention12 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
cs_imer
Messages postés59Date d'inscriptionvendredi 26 juillet 2002StatutMembreDernière intervention29 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
cs_imer
Messages postés59Date d'inscriptionvendredi 26 juillet 2002StatutMembreDernière intervention29 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
grosminou_55
Messages postés38Date d'inscriptionmardi 4 avril 2006StatutMembreDernière intervention19 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