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

Windows Discussion :

[batch] gestion de N paramètres clé="valeur"


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut [batch] gestion de N paramètres clé="valeur"
    RereBonjour (c'est la troisieme fois que je recommence ce message ).

    voilà je dois modifier un script batch afin qu'il accepte en paramètre un nombre inconnu de paramètre de type CLE="VALEUR". (en fait 6 param fixes et de 0 à 6 cle="valeur") et je suis à la recherche de qques idées ...

    Un exemple vaut mieux qu'un long discours. En gros fo que je puisse faire :

    script 1 2 3 4 5 6
    script 1 2 3 4 5 6 PREFIX="TOTO_"
    script 1 2 3 4 5 6 PREFIX="TOTO_" TRACE="YES"
    ...

    En plus cette modif portant sur plusieurs scripts, je désire utiliser un script générique qui effectuera le traitement des params. Je dois donc lui transmettre les paramètres recus.

    Ya t'il moyen de récupérer la ligne de commande ? Sinon je passe par un shift et une concaténation des paramètres.

    Autre problème (c'est surtout ça le but de ma question), comment gérer le caractère =

    parce que si je fais
    script 1 2 3 4 5 6 PREFIX="TOTO_"
    je récupère PREFIX et "TOTO_" en 2 arguments différents. Le caractère = à l'air de jouer le rôle de séparateur. Donc si j'ai 6 paramètres cle="valeur" c'est un peu galère pour traiter les couples ...

    bref en résumé :
    - suis-je obligé de passer par une concaténation ?
    - suis-je obliger de galérer pour traiter mes clé="valeur" ? (oui je suis obligé de prendre le = )
    - avez-vous des super idées bien classes ?


    merci d'avance. toute suggestion est la bienvenue ...

  2. #2
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut
    Salut !

    J'ai rien compris,esque c'est moi,ou !?

    On tout les cas,pour récupérer les paramètres passés un fichier bat ,voila un example :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo Le premier recu par ce batch est %1
    echo Le second  est %2
    echo Le troisieme  est %3
    echo Le quatrieme  est %4

    L'execution du fichier bat (sous DOS) sera par example :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fichier.bat param1 param2 param3
    A+

  3. #3
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    Bon tu dois pas etre le seul à n'avoir rien compris.

    je cherche 2 choses.

    1) transmettre les paramètres reçus par un script à un autre en utilisant si possible autre chose que la concaténation de ces parametres en une chaine que je devrais traiter en plus. (j'ai potentiellement 12 parametres et tu n'est pas sans savoir que ya rien apres %9)

    2) trouver un moyen pour gérer les paramètres de type CLE="VALEUR". Si je fais

    script CLE="VALEUR"

    je recupere 2 parametres : %1 -> CLE %2 -> "VALEUR"
    et vu que je veux traiter de 0 à 6 params comme ça c'est un peu galère car je peux avoir

    CLE1="VAL1" CLE2="VLA2" CLE5="VAL5" CLE6="VAL6"

    si je les recupere "séparément" je vais devoir tester le token n et le token n+1 de la chaine concaténée (pour l'instant) et bon c'est possible mais pas tres cool. je cherche donc une eventuelle alternative ...


    en esperant avoir été plus clair ...

  4. #4
    Membre émérite
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Par défaut
    Re !

    Ok,trés claire

    Y avais une command ou option de commande qui permet de ne pas prendre en charge les délémiteur(ou même de les spécifier,genre 'delmite=/' pour rendre '/' le délimiteur par default)dont je ne me souvien pas ,dsl

    On tout les cas,voila un site de référence pour moi :

    http://home7.inet.tele.dk/batfiles/batfiles.htm

    Je vais essayer d'y jeter un coup d'oeil pour voire si je peu t'aider



    Pour l'instant,il faut que je dorme un peu


    Bonne chance !

  5. #5
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    bon ... je galère toujours autant.

    j'ai donc décidé de concaténer les paramètres et de transmettre la chaine au script générique.

    je me retrouve donc avec une chaine de type
    1$2$3$4$5$6$a$"oo"$b$"xxx"

    en ayant passé en paramètre
    1 2 3 4 5 6 a="oo" b="xxx"

    je souhaite découper cette chaine et traiter les paramètres. j'utilise donc la boucle suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12 delims=$" %%i IN ("%1") DO (
    set var1=%%i 
    set var2=%%j 
    set var3=%%k
    set var4=%%l
    set var5=%%m
    set var6=%%n
    ...
    )
    les 6 premiers pas de pb ils sont obligatoires. J'affecte simplement des variables.

    par contre pour la suite ça se corse.
    la 7ème variable peut aussi bien être a que b que c ...
    je dois donc tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if "%%o"=="a" set a=%%p
    if "%%o"=="b" set b=%%p
    ...
    et ce pour toutes les valeurs %%o %%q %%s %%u ...

    avez vous une manière propre de faire ceci. genre saut inconditionnel et retour à la boucle ?

  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
    Billets dans le blog
    1
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    script 1 2 3 4 5 6 "PREFIX=TOTO_"  "TRACE=YES" "V= un deux"
    Utilise les guillemets pour récupérer le caractère = , ensuite parse avec l'instruction For /F.

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

Discussions similaires

  1. Paramètre dynamique avec valeur null
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 21/11/2006, 13h22
  2. Paramètre liste de valeur
    Par dwinkel dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2005, 08h39
  3. [CR8.5] Init paramètre plage de valeurs
    Par juelo dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 08/04/2005, 16h19

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