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 :

script batch avec 4 arguments obligatoires [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut script batch avec 4 arguments obligatoires
    Bonjour,

    J'essaye de créer un script batch comportant 4 arguments obligatoires par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg_index.cmd -d i: -f videos
    - L'option "-d" indique la lettre du disque dur
    - L'option "-f" indique le nom du répertoire
    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
    @echo off
    
    SET %1="-d"
    SET %3="-f"
    
    IF %1.==. GOTO No1
    IF NOT "%1" GOTO No1
    IF %2.==. GOTO No2
    IF %3.==. GOTO No3
    IF NOT "%3" GOTO No3
    IF %4.==. GOTO No4
    
    GOTO End
    
    :No1
      ECHO No param 1
    GOTO End
    :No2
      ECHO No param 2
    GOTO End
    :No3
      ECHO No param 3
    GOTO End
    :No4
      ECHO No param 4
    GOTO End
    
    :End
    Je ne parviens pas à tester %1="-d" et %3="-f", une petite idée s'il vous plaît ?

    Merci

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Je ne comprends pas ce que tu cherche à tester.
    Tu as déjä la valeur de tes variables dans ta ligne de commande.

    -d est automatiquement attribués à %1
    i: à %2
    -f à %3
    videos à %4

    pourquoi tu cherche à faire un set %1=-d (impossible).

    Pour comprendre écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo %1 %2 %3 %4
    pause
    à ta 2ème ligne de code et lance ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pkg_index.cmd -d i: -f videos
    Et on continura....

    Amicalement

  3. #3
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Bonjour

    Je veux simplement tester que l'argument %1 est bien = à "-d" pour poursuivre le traitement et non "-e" ou "-x" sinon echo option n'existe pas. C'est un exemple

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Essaye ça si tu ná que 1 parametres autorisés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if %1==-d goto suite
    echo Erreur Parametre invalide
    pause
    goto eof
    :suite
    echo parametre valide
    ::la suite de ton programme

    et ça si tu as plusieurs parametres autorisés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ::::liste parametres autorisés
    set arg_valide=-e -f -h
    
    for /d  %%a in (%arg_valide%) do (if %1==%%a goto suite)
    echo Erreur parametre invalide
    goto eof
    
    :suite
    echo parametre valide

  5. #5
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci tout d'abord de ta réponse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ::::liste parametres autorisés 
    set arg_valide=-e -f -h  
    
    for /d  %%a in (%arg_valide%) do (if %1==%%a goto suite)
    echo Erreur parametre invalide 
    goto eof  
    
    :suite 
    echo parametre valide
    Si je teste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fichier.cmd -e => paramètre valide
    fichier.cmd -x => paramètre invalide
    fichier.cmd -e i: -x => paramètre valide et pourtant -x n'est pas un argument autorisé
    Je cherche

  6. #6
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Olivier tu dois faire la même procédure pour le deuxieme, troisieme et quatrieme
    argument (respectivement %2,%3,%4)

    Avec le code que je t'ai mis on test seulement le premier argument %1

    Je t'ai fais le programme en entier et de manière bien compréhensible. parce que j'ai le temps (vacance), mais essaie de décomposer le programme et de comprendre ce qui se passe. C'est bien plus utile

    Voilä le code :

    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
    @echo off
    
    ::: On cree un indicateur pour savoir quel parametre est invalide
    set switch_param=1
    
    ::::liste parametres autorisés pour 1er argument 
    set arg_valide1=-e -f -h 
    
    ::::liste parametres autorisés pour 2eme argumentt 
    set arg_valide2=:x :p :i 
    
    ::::liste parametres autorisés pour 3eme argument 
    set arg_valide3= /d /h /k
    
    ::::liste parametres autorisés pour 4eme argumentt 
    set arg_valide4=video livre medic
    
    :::ON TEST ARGUMENT 1
    for /d  %%a in (%arg_valide1%) do (if %1==%%a goto test2)
    set switch_param=1
    goto error
    
    :::ON TEST ARGUMENT 2
    :test2
    for /d  %%a in (%arg_valide2%) do (if %2==%%a goto test3)
    set switch_param=2
    goto error
    
    :::ON TEST ARGUMENT 3
    :test3
    for /d  %%a in (%arg_valide3%) do (if %3==%%a goto test4)
    set switch_param=3
    goto error
    
    :::ON TEST ARGUMENT 4
    :test4
    for /d  %%a in (%arg_valide4%) do (if %4==%%a goto suite)
    set switch_param=4
    goto error
    
    :suite
    echo TOUT LES PARAMETRES SONT VALIDES ON CONTINUE
    :::::TON PROGRAMME
    
    goto eof
    
    :error
    echo ERREUR PARAMETRES NO - %switch_param%  EST INVALIDES
     
    :eof 
    ECHO FIN
    Tu dois au préalable définir les valeurs autorisées pour chaque argument dans les 4 variables arg_valide (1 à 4).

    Amicalement

  7. #7
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    - l'argument %1 correspond à "-d" donc il ne change pas.
    - l'argument %2 correspond à la lettre du/des disque(s) dur(s) donc oui il peut changer.
    - l'argument %3 correspond à "-f" donc il ne change pas.
    - l'argument %4 correspond au nom du/des répertoire(s) donc oui il peut changer.

  8. #8
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Voilà

    J'ai supprimer les 2 boucles for pour les paramètres 1 et 3

    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
    set switch_param=1
    goto error
    
    :::ON TEST ARGUMENT 2
    :test2
    for /d  %%a in (%arg_valide2%) do (if %2==%%a goto test3)
    set switch_param=2
    goto error
    
    :::ON TEST ARGUMENT 3
    :test3
    if %3==-f goto test4
    set switch_param=3
    goto error
    
    :::ON TEST ARGUMENT 4
    :test4
    for /d  %%a in (%arg_valide4%) do (if %4==%%a goto suite)
    set switch_param=4
    goto error
    
    :suite
    :::::TON PROGRAMME
    echo TOUT LES PARAMETRES SONT VALIDES
    
    goto eof
    
    :error
    echo ERREUR PARAMETRES NO - %switch_param%  EST INVALIDES
     
    :eof 
    ECHO FIN
    C'est OK maintenant ?

  9. #9
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    J'ai rajouté le test de %1 à savoir:
    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
    @echo off
    
    set switch_param=1
    set arg_valide2=c d e
    set arg_valide4=video livre medic
    goto error
    
    :::ON TEST ARGUMENT 1
    :test1
    if %1==-d goto test2
    set switch_param=1
    goto error
    
    :::ON TEST ARGUMENT 2
    :test2
    for /d  %%a in (%arg_valide2%) do (if %2==%%a goto test3)
    set switch_param=2
    goto error
    
    :::ON TEST ARGUMENT 3
    :test3
    if %3==-f goto test4
    set switch_param=3
    goto error
    
    :::ON TEST ARGUMENT 4
    :test4
    for /d  %%a in (%arg_valide4%) do (if %4==%%a goto suite)
    set switch_param=4
    goto error
    
    :suite
    :::::TON PROGRAMME
    echo TOUT LES PARAMETRES SONT VALIDES
    
    goto eof
    
    :error
    echo ERREUR PARAMETRES NO - %switch_param%  EST INVALIDES
     
    :eof 
    ECHO FIN
    Si je teste %1, j'obtiens ERREUR PARAMETRES NO - 1 EST INVALIDES idem si je teste les autres

    Si par exemple, il manque un argument le 4/3/2/1, il indique goto inattendu

  10. #10
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Excuse moi il y a eu une erreur lorsque j'ai copié le code il manquait le comencement.

    Tu dois definir au debut les les arguments possibles pour les paramètres 2 et 4.

    Et effectivement le programme veut 4 arguments sinon il plante. Alors il faut
    rajouter un test suplementaire pour voir si le programme a bien été lancé avec 4 arguments.

    Voilá le code avec ce test suplèmentaire et les parties manquantes

    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
    
    @echo off
    
    :::: ON TEST SI LES ARGUMENTS SONT PRESENTS
    
    IF [%1]==[] (echo Argument 1 MANQUANT
                 goto eof)
    IF [%2]==[] (echo Argument 2 MANQUANT
                 goto eof)
    IF [%3]==[] (echo Argument 3 MANQUANT
                 goto eof)
    IF [%4]==[] (echo Argument 4 MANQUANT
                 goto eof)
    
    ::: On cree un indicateur pour savoir quel parametre est invalide
    set switch_param=1
    
    ::::liste parametres autorisés pour 2eme argumentt 
    set arg_valide2=c: d: g: 
    
    ::::liste parametres autorisés pour 4eme argumentt 
    set arg_valide4=c:\toto c:\tutu
    
    
    :::ON TEST ARGUMENT 1
    
    if %1==-d goto test2
    set switch_param=1
    goto error
    
    :::ON TEST ARGUMENT 2
    
    :test2
    for /d  %%a in (%arg_valide2%) do (if %2==%%a goto test3)
    set switch_param=2
    goto error
    
    :::ON TEST ARGUMENT 3
    :test3
    if %3==-f goto test4
    set switch_param=3
    goto error
    
    :::ON TEST ARGUMENT 4
    :test4
    for /d  %%a in (%arg_valide4%) do (if %4==%%a goto suite)
    set switch_param=4
    goto error
    
    :suite
    :::::TON PROGRAMME
    echo TOUT LES PARAMETRES SONT VALIDES
    
    goto eof
    
    :error
    echo ERREUR PARAMETRES NO - %switch_param%  EST INVALIDES
     
    :eof 
    ECHO FIN
    Maintenant on pourrait rendre le code un peut plus propre en faisant les test ensemble.

    A toi de voir

    Mais comme ça cela fonctionne .

    Amicalement

  11. #11
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Je ne sais pas quoi dire à part merci

    Je veux bien voir les test ensembles et encore une fois chapeau bas

  12. #12
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Tu rajoute simplement le 1er test (si argument existe) devant le 2eme (si argument valide)

    Et voilá

    @echo off

    ::: On cree un indicateur pour savoir quel parametre est invalide
    set switch_param=1

    ::::liste parametres autorisés pour 2eme argumentt
    set arg_valide2=c: d: g:

    ::::liste parametres autorisés pour 4eme argumentt
    set arg_valide4=c:\toto c:\tutu


    :::ON TEST ARGUMENT 1

    IF [%1]==[] (echo Argument 1 MANQUANT
    goto eof)
    if %1==-d goto test2
    set switch_param=1
    goto error

    :::ON TEST ARGUMENT 2

    :test2

    IF [%2]==[] (echo Argument 2 MANQUANT
    goto eof)
    for /d %%a in (%arg_valide2%) do (if %2==%%a goto test3)
    set switch_param=2
    goto error

    :::ON TEST ARGUMENT 3

    :test3

    IF [%3]==[] (echo Argument 3 MANQUANT
    goto eof)
    if %3==-f goto test4
    set switch_param=3
    goto error

    :::ON TEST ARGUMENT 4

    :test4
    IF [%4]==[] (echo Argument 4 MANQUANT
    goto eof)
    for /d %%a in (%arg_valide4%) do (if %4==%%a goto suite)
    set switch_param=4
    goto error

    :suite
    :::::TON PROGRAMME
    echo TOUT LES PARAMETRES SONT VALIDES

    goto eof

    :error
    echo ERREUR PARAMETRES NO - %switch_param% EST INVALIDES

    :eof
    ECHO FIN

    Amicalement

  13. #13
    Membre expérimenté

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Par défaut
    Merci beaucoup

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

Discussions similaires

  1. [Python 3.X] lancer un script .py avec deux arguments
    Par Mic** dans le forum Général Python
    Réponses: 4
    Dernier message: 03/02/2015, 21h40
  2. Execution du script batch avec différents contextes
    Par rolandl dans le forum Exécution et industrialisation
    Réponses: 9
    Dernier message: 03/08/2012, 19h04
  3. Appel script Perl avec arguments
    Par metalcoyote dans le forum Général Java
    Réponses: 5
    Dernier message: 12/06/2008, 16h33
  4. Un script shell avec nombre d'argument variable
    Par lastrecrue dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2006, 11h35
  5. (Batch et VBS) Petit probléme avec un script batch VBS
    Par Edoxituz dans le forum Windows
    Réponses: 11
    Dernier message: 27/02/2006, 17h21

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