IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

vbs : problème avec une boucle + csv


Sujet :

VBScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 14
    Points
    14
    Par défaut vbs : problème avec une boucle + csv
    Bonjour, j'ai fait un script pour me permettre de lancer des softs dans un ordre établi et avec des intervalles de temps définis.

    J'ai fait le tout en vbscript dans un hta.

    Je voudrais savoir comment faire pour pouvoir utiliser un fichier ini, config ou autre dans lequel j'entrerais les chemins , délais et textes à afficher et que le script les lisent dans un boucle.

    Bref, pouvoir éditer la liste des softs à lancer sans avoir à retoucher systematiquement au script en lui meme.
    peut etre avec un ini du style:
    start01:
    nom : 111
    chemin : C:\Program Files\111\111.exe
    delai : 5000

    start02
    etc...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    <SCRIPT language="vbscript">
    Dim WshShell
     
    		Sub Window_onLoad
    			StartTimer	    
    		End Sub
     
    Sub StartTimer
    			MonTimer0 =window.setTimeOut ("welcome", 1000, "VBScript") 'Appel de MonScript
    			MonTimer1 = window.setTimeOut ("Start01", 5000, "VBScript") 'Appel de MonScript 
    			MonTimer2 = window.setTimeOut ("Start02", 10000, "VBScript") 'Appel de MonScript 
    			MonTimer3 = window.setTimeOut ("Start03", 15000, "VBScript") 'Appel de MonScript 
    			MonTimer4 = window.setTimeOut ("Start04", 20000, "VBScript") 'Appel de MonScript 
    			MonTimer5 = window.setTimeOut ("Start05", 25000, "VBScript") 'Appel de MonScript
    			MonTimer6 = window.setTimeOut ("Startend", 30000, "VBScript") 'Appel de MonScript 
    			MonTimer7 = window.setTimeOut ("Startclose", 35000, "VBScript") 'Appel de MonScript 
    		End sub
     
    Sub Welcome
    S = SetTimeOut("MaSub (""Vos applications vont se lancer dans un instant... Veuillez patienter..."")", 100)
    End Sub		
     
    Sub Start01
    Set WshShell = CreateObject ("Wscript.Shell")
     
    WshShell.Run Chr(34) & "C:\Program Files\111\111.exe"
    S = SetTimeOut("MaSub (""111 a bien été lancé !"")", 100)
    End Sub
     
    Sub Start02
    Set WshShell = CreateObject ("Wscript.Shell")
     
    WshShell.Run Chr(34) & "C:\Program Files\222\222.exe"
    S = SetTimeOut("MaSub (""222 a bien été lancé !"")", 100)
    End Sub
     
    Sub Start03
    Set WshShell = CreateObject ("Wscript.Shell")
    WshShell.Run Chr(34) & "C:\Program Files\333\333.exe"
    S = SetTimeOut("MaSub (""333 a bien été lancé !"")", 100)
    End Sub
     
    Sub Start04
    Set WshShell = CreateObject ("Wscript.Shell")
    WshShell.Run Chr(34) & "C:\Program Files\444\444.exe"
    S = SetTimeOut("MaSub (""444 a bien été lancé !"")", 100)
    End Sub
     
     
    Sub Start05
    Set WshShell = CreateObject ("Wscript.Shell")
    WshShell.Run Chr(34) & "C:\Program Files\555\555.exe"
    S = SetTimeOut("MaSub (""555 de mixage a bien été lancée !"")", 100)
    End Sub
     
    Sub Startend
    S = SetTimeOut("MaSub (""toutes les applications ont été correctement lancées !"")", 100)
    End Sub
     
    Sub Startend
    window.close()
    End Sub
     
    Set WshShell = nothing
     
    </SCRIPT>
    Merci à vous pour votre aide, car j'ai boucoup galéré pour faire ce script et je ne maitrise clairement pas assez pour m'en sortir seul sur cet appel/boucle avec un fichier ini

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 806
    Points
    5 806
    Par défaut
    Salut;

    Peut-être que ce Lien et celui-ci te donnent un coup de main.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Hello l_autodidacte !

    tout d'abord merci à toi!

    En fait je suis parti sur un fichier csv, j'arrive à le lire, mais c'est dans ma création des sub que je fais des erreurs...

    mon csv :
    MonTimer0;Start01;5000;"C:\Program Files\Monsoft\monsoft.exe";""L'application a bien été lancée !""
    MonTimer1;Start02;10000;"C:\chemin\service.vbs";""Le service a bien été lancé !""
    mon hta:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <SCRIPT language="vbscript">
      Dim FSO, LeFichier
    	Dim CheminNomFichier, MeTbl, PourTbl, T
     
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    CheminNomFichier =  "D:\monchemin\StartApp.csv"
    Set LeFichier = fso.OpenTextFile(CheminNomFichier,1)
    PourTbl = LeFichier.ReadAll
    LeFichier.Close
     
       Dim Var0, Var1, Var2, Var3, Var4
    ' .......................
    'PourTbl contient: "un;deux;trois;quatres;cinqiéme et dernier;"
    	MeTbl = split(PourTbl,";")
    	for T =0 to ubound(MeTbl)-1
     
    	next
    	var0 = MeTbl(0)
    	var1 = MeTbl(1)
    	var2 = MeTbl(2)
    	var3 = MeTbl(3)
    	var4 = MeTbl(4)
     
     
    Dim WshShell
     
    		Sub Window_onLoad
    			StartTimer	    
    		End Sub
     
    Sub StartTimer
    			var0 =window.setTimeOut ( var1, var2, "VBScript") 'Appel de MonScript
    		End sub
     
    Sub Start(var1)
    Set WshShell = CreateObject ("Wscript.Shell")
    WshShell.Run WshShell.ExpandEnvironmentStrings(var3)
    S = SetTimeOut("MaSub (var4)", 100)
    End Sub
     
    Sub Startend
    S = SetTimeOut("MaSub (""toutes les applications ont été correctement lancées !"")", 100)
    End Sub
     
    Sub Startend
    window.close()
    End Sub
     
    Set WshShell = nothing
     
    </SCRIPT>
    quand je le lance il attends 5 secondes puis me dit :
    line 1
    erreur :type incompatible : Start01
    J'ai une erreur dans l'interprétation de mon code mais je ne comprends pas laquelle?

    Merci pour ton aide, stp

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 28
    Points : 14
    Points
    14
    Par défaut
    Hello!
    Bon j'ai plutot bien avancé (je trouve ) mais j'ai encore un souci sur lequel je seche.

    Donc partant d'un csv, j'arrive bien à créer mes variables et les lire...
    Le souci, c'est qu'il execute tous lesWshShell.Run à la suite sans prendre en compte le délai que je mets en place.

    Par contre le texte correspondant est affiché en prenant en compte ce délai.
    Je ne comprends pas car mon Settimeout est dans la boucle au même titre que mon WS.Run et pourtant l'un prend en compte le délai et pas l'autre...

    Si vous pouviez jeter un petit coup d'oeil, ce serait sympa?
    mon csv:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Horloge,Nom,Delai,Soft,Resultat
    MonTimer1,Start01,5000,C:\Program Files\IZArc\IZArc.exe,L'application a bien été lancée
    MonTimer2,Start02,10000,C:\Program Files\Moffsoft FreeCalc\MoffFreeCalc.exe,Le service a bien été lancé
    MonTimer3,Start03,15000,,Toutes les tâches ont été correctement exécutées !
    MonTimer4,Start04,20000,,StartApp va maintenant se fermer !
    fichier hta:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    [...]
    <SCRIPT language="vbscript">
    Dim WshShell
     
    		Sub Window_onLoad
    			StartTimer	    
    		End Sub
     
    Sub StartTimer
    			MonTimer0 =window.setTimeOut ("Welcome", 1000, "VBScript") 'Appel de MonScript
    			'MonTimer6 = window.setTimeOut ("Startend", 25000, "VBScript") 'Appel de MonScript 
    			'MonTimer7 = window.setTimeOut ("Startclose", 30000, "VBScript") 'Appel de MonScript 
    		End sub
     
    Sub Welcome
    S = SetTimeOut("MaSub (""Vos applications vont se lancer dans un instant... Veuillez patienter..."")", 100)
    End Sub
     
     
     
    	'lancement boucles
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    CheminNomFichier =  "StartApp.csv"
    Set oStream = fso.OpenTextFile(CheminNomFichier,1)
     
    Dim Horloge
    Dim Nom
    Dim Delai
    Dim Soft
    Dim Resultat
     
     
    Dim aVars 
    aVars = Array( "Horloge", "Nom", "Delai", "Soft", "Resultat" ) 
     
    Dim oFSO
    Set oFSO = CreateObject( "Scripting.FileSystemobject" )
     
    Const INPUT_FILE = "StartApp.csv"
    Dim oStream
    Dim sData
    Dim aData
     
     
     
    oStream.SkipLine
    Do While oStream.AtEndOfStream = False
        sData = oStream.ReadLine
        aData = Split( sData, "," )
        For i = 0 To UBound( aData ) 
            Execute aVars( i ) & " = " & Chr( 34 ) & aData( i ) & Chr( 34 ) 
        Next 
        'At this point all the vars referred to in aVars have the values
        'of the current record
     
    	'START APP
     
        'WSCript.Echo Horloge, Nom, Delai, Soft, Resultat
    	'WScript.Sleep Delai
     
    	'St = SetTimeOut( Nom , Delai, "VBScript") 'Appel de MonScript
     
    Set WshShell = CreateObject ("Wscript.Shell")
    WshShell.Run Chr(34) & soft
    S = SetTimeOut("MaSub (" & Chr(34) & Resultat & Chr(34) & ")", Delai)
     
    Loop
     
    oStream.Close
     
    Sub StartTimerbis 
    			MonTimer999 = window.setTimeOut ("Startclose", 2000, "VBScript") 'Appel de MonScript 
    		End sub
     
    Sub Startclose
    window.close()
    End Sub
     
     
    Set WshShell = nothing
     
    </SCRIPT>
     
    </head>
     
    <Body STYLE="font:10 pt arial; color:white;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr='#000033', EndColorStr='#0000FF')">
     
    <p><center> <img src=".\startapp.bmp" /> </center></p>
    <br/><br/><br/>
     
    <p><center>
    <span style="color:white">
    <div id = D></div>
     
    <script language = vbs>
    Sub MaSub (E)
    Document.All.D.innerHTML = E
    ClearTimeOut S
    End Sub
    </script>
    </center></p>
     
    </span>
    </body>
    </html>

Discussions similaires

  1. Problème avec une boucle
    Par bf491499 dans le forum VB.NET
    Réponses: 1
    Dernier message: 16/03/2007, 08h35
  2. Problème avec une boucle
    Par sissi25 dans le forum Langage
    Réponses: 7
    Dernier message: 22/02/2007, 00h40
  3. problème avec une boucle
    Par mars315 dans le forum Langage
    Réponses: 14
    Dernier message: 25/11/2006, 09h39
  4. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 17h50
  5. [MySQL] Problème avec une boucle
    Par yayacameleon dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 09/03/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo