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 :

condition dans un batch


Sujet :

Scripts/Batch

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut condition dans un batch
    Bonjour,

    J'ai un probleme avec mon .bat, qui fonctionne tres bien sans condition mais lorsqu'il s'agit d'une condition a ajouter arf ca va plus.
    En fait je fais un mysqldump jusque la tout va mais je veux tester si il n'y pas eu de probleme dans la sauvegarde avant d'effacer les sauvegardes précédentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%).sql
    
    if (mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%)tempo.sql ==0)
    
    del /q Sauvegarde\backupBDD*.sql
    pause
    
    else echo arf
    pause
    merci de votre aide

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    L'égalité à zéro, ça signifie quoi pour toi ? Un code de retour ? Si oui, il faut passer par ERRORLEVEL (cf. aide "if", tapes "if /?" en ligne de commande) pour la tester.

    De plus, tu fais deux fois le "mysqldump", d'une part, et en plus tu effaces juste après le fichier créé... C'est ce qu'on te disait sur l'autre post en te disant de te méfier des jokers avec del, là tu vas effacer un précédent fichier tout comme ton fichier temporaire.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%).sql
    
    If NOT ERRORLEVEL 
    
    del /q Sauvegarde\backupBDD*.sql
    
    
    else  echo arf
    voila avec le errolevel, ba enfait si le dump s'est bien passé le fichier est supprimé et remplacé par le nouveau sinon on garde l'ancien.

    euh de toute facon je n'ai qu'un fichier.sql dans mon dossier donc je ne risque pas d'en supprimer d'autre si?

    n'empeche que mon .bat marche mais avec la condition et quand c'est faux ca ne marche pas il me le remplace par un fichier avec rien dedans.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    C'est mieux de LIRE l'aide, tu sais ? Y'a des exemples d'utilisation de ERRORLEVEL, là ton code ne veut rien dire...

    De plus, il faut être certain que ton outil retourne bel et bien un code d'erreur utilisable !!
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @SET REUSSI=Sauvegarde reussie 
    @SET ECHEC=Sauvegarde echouee 
    @set DATE_today=%DATE:~0,2%-%DATE:~3,2%-%DATE:~8,2%
    @SET TIME_today=%TIME:~0,2%H%time:~3,2% 
    @set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    
    @mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%).sql
    
    @if %ERRORLEVEL% EQU 0 echo %REUSSI% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt
    @del /q Sauvegarde\backupBDD*.sql
    
    @if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt
    ce code fonctionne quand ca marche j'ai bien le log quand la sauv est marquée et l'ancien backup est effacée.
    Par contre le mysqldump ne marche pas donc je n'ai plus le nouveau backup et pas de message d'erreur.
    En clair tout ne marche pas.
    Et je me renseigne partout et j'ai vraiment besoin d'aide

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    bon j'ai farfouillé partout, je suis rendu la :
    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
    SET REUSSI=Sauvegarde reussie 
    SET ECHEC=Sauvegarde echouee 
    set DATE_today=%DATE:~0,2%-%DATE:~3,2%-%DATE:~8,2%
    SET TIME_today=%TIME:~0,2%H%time:~3,2% 
    set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    
    move Sauvegarde\backupBDD*.sql Sauvegarde\ancien\
    
    pause
    
    mysqldump --opt -h localhost -u root -pmysql est>Sauvegarde\backupBDD(%myvar%).sql
    
    pause
    
    if %ERRORLEVEL% EQU 0 echo %REUSSI% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt
    del Sauvegarde\ancien\backupBDD*.sql
    
    if %ERRORLEVEL% GEQ 1 echo %ECHEC% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt  
    move Sauvegarde\ancien\backupBDD*.sql Sauvegarde\
    
    
    pause
    le 1ere errorlevel est egal a 0 si tout va mais si il y a une erreur il met un autre chiffre, par contre mon deuxieme errorlevel m'indique toujours 0 donc dur de faire quelque chose.
    Et j'ai l'impression que mes conditions ne servent a rien puisque j'ai l'impression qu'il execute tout a la suite


    help

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Utilise un "else" et des parenthèses, encore une fois regarde l'aide et les exemples du "if".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    rooo mais commence à en avoir marre avec l'aide, j'ai regardé sur des sites, sur ce site aussi la syntaxe n'est jamais la même.
    J'ai essayé avec des parenthèses et un else, il me met else n'est pas reconnu comme commande interne...

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Extrait direct de l'aide renvoyée par "if /?", commande que je t'ai indiquée précédemment... J'ai mis en gras / couleur les points importants.
    Citation Envoyé par if /?
    La clause ELSE doit être sur la même ligne que la commande suivant IF. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IF EXIST nomfichier. (
            del nomfichier.
        ) ELSE (
            echo nomfichier. introuvable.
        )
    L'exemple suivant NE marche PAS car la commande del doit être terminée
    par une nouvelle ligne
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF EXIST nomfichier. del nomfichier. ELSE echo nomfichier. introuvable
    L'exemple suivant NE marche PAS non plus, car la commande ELSE doit être sur la même ligne que la fin de la commande IF :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF EXIST nomfichier. del nomfichier.
        ELSE echo nomfichier. introuvable
    Enfin, l'exemple suivant marche si vous l'écrivez sur une seule ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF EXIST nomfichier. (del nomfichier.) ELSE echo nomfichier. introuvable
    Franchement, je ne vois pas ce qu'il te faut de plus... Aider, OK, je le fais avec plaisir, mais l'assistanat, c'est mal.


    Quant à ERRORLEVEL, il est modifié à chaque fois que tu vas exécuter une commande externe... Comme "del" ou "move", il est donc crucial de terminer les tests sur l'exécution de mysqldump avant d'appeler d'autres commandes.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    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 REUSSI=Sauvegarde reussie 
    SET ECHEC=Sauvegarde echouee 
    set DATE_today=%DATE:~0,2%-%DATE:~3,2%-%DATE:~8,2%
    SET TIME_today=%TIME:~0,2%H%time:~3,2% 
    set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    
    move Sauvegarde\backupBDD*.sql Sauvegarde\ancien\
    
    pause
    
    mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%).sql
    
    pause
    
    echo La valeur d'errorlevel actuelle est %errorlevel%
    pause
    
    if %ERRORLEVEL% EQU 0 ( 
       echo %REUSSI% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt
       del Sauvegarde\ancien\backupBDD*.sql
    )
    
    else (
       echo %ECHEC% le %DATE_today% a %TIME_today% >Sauvegarde\log.txt  
       del Sauvegarde\backupBDD*.sql
       move Sauvegarde\ancien\backupBDD*.sql Sauvegarde\
    
    )
    
    
    
    pause
    voila ce que je fais, pour quand ca echoue ca me fait bien ce que ca doit faire mais maintenant, il me créé plus mon fichier quand ca marche.

    Je suis desole si tu as pu croire que je suis un assisté mais je crois que tu trompes éperdument.

    edit : j'ai modifié certains trucs et ca l'air de fonctionner.

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Tu as mis le ELSE sur une AUTRE LIGNE que le IF... Ça ne peut PAS marcher, relis le post précédent.

    Si tu as un truc qui marche, poste-le, stp.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    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
    echo off
    SET REUSSI=Sauvegarde reussie 
    SET ECHEC=Sauvegarde echouee 
    set DATE_today=%DATE:~0,2%-%DATE:~3,2%-%DATE:~8,2%
    SET TIME_today=%TIME:~0,2%H%time:~3,2% 
    set myvar=%date:~0,2%-%date:~3,2%-%date:~6,4%
    
    move Sauvegarde\backupBDD*.sql Sauvegarde\ancien\
    
    pause
    
    mysqldump --opt -h localhost -u root -pmysql test>Sauvegarde\backupBDD(%myvar%).sql
    
    pause
    
    echo La valeur d'errorlevel actuelle est %errorlevel%
    pause
    
    if %ERRORLEVEL% EQU 0 ( 
       echo %REUSSI% le %DATE_today% a %TIME_today% >>Sauvegarde\log.txt
       del Sauvegarde\ancien\backupBDD*.sql
    )else (
       echo %ECHEC% le %DATE_today% a %TIME_today% >>Sauvegarde\log.txt  
       del Sauvegarde\backupBDD*.sql
       move Sauvegarde\ancien\backupBDD*.sql Sauvegarde\
    
    )
    
    
    
    pause
    voila, ca marche ca !

    euh maintenant, un petit soucis pour restaurer la sauvegarde je veux restaurer le seul fichier sql qu'il y a mais en faisant ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql --opt -h localhost -u root -pmysql test<Sauvegarde\backupBDD*.sql
    il me dit que le fichier est introuvable, donc je pense qu'il doit pas trop aimer l'étoile.

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Normal, les jokers dans les noms de fichier, faut encore que l'outil les accepte... Utilise un "for" avec ce nom et envoie le résultat à ton outil, même s'il n'y a qu'un seul fichier à traiter.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 153
    Par défaut
    euh j'ai regardé l'aide mais comprends pas vraiment tout.
    Qu'est ce que je dois déroulé avec le for?

Discussions similaires

  1. Ajouter une condition pour la commande net use dans un batch
    Par killahpriest dans le forum Administration
    Réponses: 0
    Dernier message: 23/10/2014, 16h05
  2. Condition dans script batch
    Par ZorroDu33 dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 27/01/2011, 14h27
  3. recuperer date dans un batch et la placer en variable
    Par Phenomenium dans le forum Windows
    Réponses: 6
    Dernier message: 07/06/2004, 10h44
  4. probleme d' echo dans un batch
    Par zorian dans le forum Windows
    Réponses: 16
    Dernier message: 18/05/2004, 17h21
  5. Réponses: 5
    Dernier message: 01/10/2003, 15h03

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