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

Scripts/Batch Discussion :

[Debutant] Batch et Boucle for


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut [Debutant] Batch et Boucle for
    Bonjour a tous,

    J'essaie de faire un script batch tout bete comme vous pouvez le voir ci-dessous :
    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
    @echo off
    :: Schedule list
    
    set WLR_HOME=C:\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe
    set CACHE_HOME=..\cacheComponents
    set SINGLE_HOME=..\singleResponseTime
    
    :: Cache Components 5 minutes per scenario, spacing 5 minutes
    
    set BASE_TIME=00:00:00
    set i=0
    
    for %%f in ( 	CacheTestComponentValidator_iView.lrs 
    		CacheTestComponentValidator_Page.lrs
    		... 
    		CacheTestComponentDiscriminator_Page.lrs     ) do
    
    	schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%f -Run" /sc daily /st %BASE_TIME%+%i%*00:10:00
    	/math i= %i% + 1
    En ajoutant, 1 a la variable i a chaque tour, en modifiant le test en test0, test1 ... et en ajoutant 10 minutes a chaque fois.

    Dans un second temps, je veux recuperer le password demande lors de la premiere execution de schtasks pour qu'il ne le demande pas a chaque tour de boucle.

    Enfin, c'est une version preliminaire, bien entendu les variables CacheXXXX devrait etre ecrites dans un fichier et seul le contenu du fichier devrait etre parse.

  2. #2
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    J'ai traite le sujet d'une maniere legerement differente depuis :

    1> Un fichier texte contenant les informations scenarios.lst :

    ;; PRT Cache Test components

    CacheTestComponentValidator_iView.lrs,00:05:00
    CacheTestComponentValidator_Page.lrs,00:15:00
    ....etc
    et le script suivant :

    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
    @echo off
    :: Schedule list
    
    set WLR_HOME=C:\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe
    set CACHE_HOME=..\cacheComponents
    set SINGLE_HOME=..\singleResponseTime
    
    :: Cache Components 5 minutes per scenario, spacing 5 minutes
    
    set i=0
    
    for /f "eol=; tokens=* delims=," %%a in ( scenarios.lst ) do
    
    	schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b
    	/math i= %i% + 1
    J'ai l'erreur suivante :
    The syntax of the command is incorrect
    Merci de votre aide, par avance

    PS: Pour le password j'ai l'idee de le recuperer de la saisie utilisateur lorsque i=0 et de l'ajouter avec /s <ma_machine> /u <mon_login> /p %PASSWD%

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    la syntaxe '::' me semble valide que pour la déclaration d'étiquette de sous-programme au sens batch, d'aprés ton script il s'agit de commentaire.
    L'utilisation de Rem en lieu et place de '::' corrige le pb, ou plus précisément n'affiche plus le msg d'erreur de syntaxe.
    Place l'instruction echo on en début de script, c'est plus facile pour le mode debug.

    [Edit]
    j'ai tout faux ! cf msg suivant

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Bon j'ai tout faux sur le msg précédent
    La commande For ..Do doit être sur la même ligne :

    For /f "eol=; tokens=* delims=," %%a in ( scenarios.lst ) do (
    schtasks /create /tn "test"+i /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /math i= %i% + 1 )

    L'ajout de parenthése est nécessaire si l'intruction 'For ...Do' se fait sur 2 lignes.

  5. #5
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "eol=; tokens=1 delims=," %%a in &#40; scenarios.lst &#41; do &#40;
    schtasks /create /tn "test"%i% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st 00&#58;00&#58;00 /s %MACHINE% /ru %UNAME% /rp %PASSWD% 
    set /n i=%i%+1&#41;
    Bon j'ai modifie le script ainsi et j'ai deux soucis, il lance la boucle et recupere bien le premier element du fichier (%%a), mais jamais le second si je remplace l'heure par %%b sans declarer ce dernier. Enfin, il ajoute 0 a chaque iteration de la boucle en lieu et place des valeurs en theorie incrementee de i.

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Pour le compteur , la commande Set /A me semble plus approprié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set /A I=0
    ....
    Set /A I+=1
    ...
    Je comprend pas bien le EOL =; ?
    Au vue du contenu du fichier précédent la commande Skip=1 n'est pas préférable ?

    Pour visu, essaie simplement ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for /f "eol=; tokens=1 delims=," %%a in &#40; scenarios.lst &#41; do &#40; 
    Echo %%a
    Echo %%b

  7. #7
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    Merci, tout ceci est tres aimable, pour le parsing du fichier No problem, tout est regle, je n'ai plus que le probleme du compteur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    set /A i=0
    for /F "eol=; tokens=1,2 delims=," %%a  in &#40; scenarios.lst  &#41; do &#40;
    schtasks /create /tn "test"%i% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /s %MACHINE% /ru %UNAME% /rp %PASSWD% 
    set /A i+=1
    &#41;
    Je commence a comprendre un peu mieux ce langage

    PS : Le probleme a ete resolu en placant le contenu de la boucle dans un second fichier appele par cette derniere.

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Effectivement le set /A ne semble pas fonctionner dans bloc (), pb de portée ?
    Si tu souhaites éviter l'utilisation de 2 fichiers.
    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
    echo off
    &#58;&#58; Schedule list 
    
    set WLR_HOME=C&#58;\Program Files\Mercury Interactive\LoadRunner\bin\wlrun.exe 
    set CACHE_HOME=..\cacheComponents 
    set SINGLE_HOME=..\singleResponseTime 
    
    &#58;&#58; Cache Components 5 minutes per scenario, spacing 5 minutes 
    
    set /A I=0
    for /F "eol=; tokens=1,2 delims=," %%a  in &#40; scenarios.lst  &#41; do call &#58;&#58;Sub1 
    goto end
    
    &#58;Sub1
    
    Rem sous-programme
    rem ici les varaibles %1..9 sont locales au sp
    
    Schtasks /create /tn "test"%I% /tr "%WLR_HOME%\wlrun.exe -TestPath %CACHE_HOME%\scenarios\%%a -Run" /sc daily /st %%b /s %MACHINE% /ru %UNAME% /rp %PASSWD%
    set /A I+=1
    Rem retour du SP
    goto &#58;eof 
    
    rem fin du batch 
    &#58;end

  9. #9
    Membre confirmé

    Homme Profil pro
    Indépendant
    Inscrit en
    Juin 2002
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Indépendant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 540
    Points : 607
    Points
    607
    Par défaut
    En effet, Merci pour ton aide si precieuse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [batch] double boucle for
    Par schlopa dans le forum Windows
    Réponses: 12
    Dernier message: 11/02/2008, 19h54
  2. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  3. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12
  4. Debutant pb boucle for
    Par boober31 dans le forum Débuter
    Réponses: 6
    Dernier message: 24/02/2006, 17h02
  5. [batch] incrémentation dans une boucle for
    Par bart64 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 08/09/2004, 20h05

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