Bat retourne variable

Résolu
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 8 déc. 2006 à 20:23
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 13 déc. 2006 à 21:27
Bonsoir,
je voulais juste savoir si on pouvait récupérer une valeur dans un fichier bat
Exemple "start.bat" contient :

script.vbs test
script.vbs test1

Quand script.vbs est lancé, j'aurais besoin de savoir quel est la valeur (ici test puis test1) à utiliser
Pour l'instant je fais un simple opentextFile suivi d'un split...

set fso=createobject("Scripting.FileSystemObject")
set f=fso.opentextFile("start.bat")
tabl=split(f.readline , " ")
if tabl(1)="test" then
...
elseif tabl(1)="test1" then
...
end if

Il n'y aurait pas d'autre solutions ?

Quand je suis là tout va mal  

12 réponses

leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
13 déc. 2006 à 21:27
J'ai trouvé :
set scarguments="Icon"
set scarguments1="Printer"
set scarguments2="NetworkDrive"
cscript  script.vbs %scarguments%
cscript  script.vbs %scarguments1%
cscript  script.vbs %scarguments2%
pause

Merci pour l'aide (et les cours)
@++
Quand je suis là tout va mal  
3
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
8 déc. 2006 à 20:44
ah oui sans oublier le
Do while not f.AtEndOfStream
loop

Quand je suis là tout va mal  
0
le cancre Messages postés 292 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 27 novembre 2009
8 déc. 2006 à 21:59
Salut ^^

Quand script.vbs est lancé, j'aurais besoin de savoir quel est la valeur

si c'est toujours "script.vbs" au début
vu que len("script.vbs") = 10 
MsgBox  mid(F.ReadLine,11)

ou si tu dois faire des conditions
select case Mid(F.readline,11)
   case "test" : 
   case "test1" :
end select
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
8 déc. 2006 à 22:15
Moui, ça m'enleve le tableau...
pour le select case ça revient au même que d'utiliser ElseIf non ?
sinon j'ai fait une autre erreur : quand  j'ouvre le fichier bat il m'indique une erreur comme quoi script.vbs n'est pas une commande valide... (ya plus qu'a chercher la syntaxe)
sinon merci pour la réponse Le cancre

Quand je suis là tout va mal  
0

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

Posez votre question
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
8 déc. 2006 à 22:56
Erreur résolue !! j'ai oublié de mettre cscript dans le fichier ...
du coup la ligne est :
cscript script.vbs test
Par contre je vois toujours pas la différence entre mon ElseIf et le Select Case ...
Quand je suis là tout va mal  
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
9 déc. 2006 à 13:32
 Bonjour à tous

Dans ce cas, je trouve préférable d'utiliser le "select case" qui est plus souple et surtout plus compréhensible visuellement.
Je n'ai fait que reprendre vos 2 propositions (899656 leSaleGauSS et =891984 Le cancre).

ex:
'je voulais juste savoir si on pouvait récupérer une valeur dans un fichier bat
'Exemple "start.bat" contient :
'cscript script.vbs test
'cscript script.vbs test1
'cscript script.vbs test2
'cscript script.vbs toto
' .... un nbre indéfini de lignes



set fso=createobject("Scripting.FileSystemObject")
set f=fso.opentextFile("D:\Test_VBFrance\start.bat")



set Dico_tabl = CreateObject("Scripting.Dictionary")



nbre_args = 0



Do while not f.AtEndOfStream
   tabl=split(f.readline , " ")
   Dico_tabl.Add nbre_args, tabl(2) : nbre_args = nbre_args +1
Loop



MsgBox Dico_tabl.Count,,"nbre d'item dans le dictionary"



For i = 0 To Dico_tabl.Count -1
'   MsgBox Dico_tabl(i),,"verif dico_tabl(i)"
   
    Select Case Dico_tabl(i)
    Case "test1" : MsgBox "ici pour x raisons, j'effectue une action"
    Case Else
    End Select



Next



set Dico_tabl = Nothing
set fso = Nothing
Set f = Nothing


Ce post n'apporte rien de mieux, mais c'est normal venant de ma part.
Il y a x possibilités pour arriver au même résultat (merci Rome).
De même, on aurait pu utiliser RegEx et la collection Matches.
jean-marc
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
13 déc. 2006 à 01:54
"Ce post n'apporte rien de mieux, mais c'est normal venant de ma part."



Rien de mieux ?, je ne connaissais même pas l'existence d'un dictionnary en vbscript (ni son utilisation d'ailleurs)...enfin merci quand même, je vais tester cela

Quand je suis là tout va mal  
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
13 déc. 2006 à 01:59
Sinon ma première question était de savoir s'il n'y avait pas une autre façon de faire. Visiblement non ...

Quand je suis là tout va mal  
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
13 déc. 2006 à 06:15
 Bonjour à tous

Bonjour leSaleGauSS ,
WScript.Arguments permet vérifier les variables.

jean-marc
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
13 déc. 2006 à 20:03
Heu comment on l'utilise ? Aurais tu un exemple ?

Quand je suis là tout va mal  
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
13 déc. 2006 à 20:11
 Bonsoir à tous

Bonsoir leSaleGauss,

http://resinfo.free.fr/BTSIRIS/Cours/Programmation/VBS/Cours%20vbs/wsh_04.pdf

peux-tu reformuler (un peu plus clairement pour moi) ton topic....

jean-marc
0
leSaleGauSS Messages postés 148 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 4 décembre 2008
13 déc. 2006 à 21:10
Bonsoir JMO

j'ai un fichier .bat et un autre .vbs
le .bat doit lancer le script en prenant en compte un argument
exemple
   Dans .bat :
cscript scipt.vbs %Icon%
cscript scipt.vbs %Printer%
   Dans .vbs :
if wscript.arguments="Icon" then
...
elseif wscript.arguments="Printer"  then
...
end if

C'est plus clair ou la pile est morte ?

Quand je suis là tout va mal  
0
Rejoignez-nous