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 :

Boucle infini dans un batch


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut Boucle infini dans un batch
    Bonjour tout le monde.

    Je suis sur une problématique qui ne devrait pas vous posez, vous qui êtes doués, trop de problème.
    Voilà mon soucis, j'ai actuellement datacenter sous ESXI à sauvegarder, je les sauvegarde avec un logiciel que j'appelle par script PowerShell.
    Les scripts de sauvegardes fonctionnent correctement, aucun soucis là dessus. Ma problématique étant qu'il y a trop de machines pour tout passer sur 24h.

    J'ai donc décidé de faire un petit script batch qui me permettrait de lancer tous mes scripts PowerShell à la suite, et une fois arrivé à la fin du script, qu'il rappelle mon premier script PowerShell de mon script batch, j'espère que vous suivez toujours ^^. Voilà comment se présente mon BATCH:

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    powershell "D:\ScriptsBackup\XXXXXX.ps1" ;
    powershell "D:\ScriptsBackup\YYYYYY.ps1" ;
    powershell "D:\ScriptsBackup\ZZZZZ.ps1" ;

    Mon premier script étant X, mon dernier étant Z, ils se lancent à la suite du précédent, je souhaiterais donc qu'à la fin du Z, il rappelle le X pour faire tourner le script BATCH en boucle et avoir des sauvegardes qui se suivent tout en optimisant le temps.

    Idéalement, je souhaiterais également que ça me renvoie l'heure et la date à la fin de chaque powershell dans un fichier de log, mais bon c'est peut-être beaucoup demander.

    Merci beaucoup pour votre aide.

  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
    Salut

    On peut imaginer qqe chose de très basique :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @echo off
    echo Start Time : %time% > Boucle.log
    
    
    :boucle
    powershell "D:\ScriptsBackup\XXXXXX.ps1" ;
    echo XXXXXX.PS1 ENDTIME : %time% - Date %date% >> Boucle.log
    powershell "D:\ScriptsBackup\YYYYYY.ps1" ;
    echo YYYYYY.PS1 ENDTIME : %time%  - Date %date%>> Boucle.log
    powershell "D:\ScriptsBackup\ZZZZZ.ps1" ;
    echo ZZZZZ.PS1 ENDTIME : %time%  - Date %date%>> Boucle.log
    
    goto:boucle

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut Merci du retour
    Bonjour Sachadee,

    J'ai donc planché hier sur une façon alternative, qui ceci dit fonctionne très bien, qui est de passer par deux scripts.
    Voici donc ce que j'ai fait, mais que je compte améliorer dans peu de temps pour me permettre d'y indiquer des informations supplémentaires dans les logs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    powershell "D:\ScriptsBackup\XXXXXX.ps1" ;
    echo XXXXXX %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %ERRORLEVEL% >> "D:\ScriptsBackup\LOG-BKP.txt" ;
    powershell "D:\ScriptsBackup\YYYYYY.ps1" ;
    echo YYYYYY %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %ERRORLEVEL% >> "D:\ScriptsBackup\LOG-BKP.txt" ;
    call "D:\ScriptsBackup\SCRIPT-BKP-01.bat"
    exit
    De cette façon, je ne fais du coup pas de retour sur mon premier script.
    Je sais que ce n'est pas optimal, loin de là, mais c'est fonctionnel pour l'instant.
    Si des gens aiment l'optimisation, je suis aussi très preneur ^^

    En tous cas, merci de ton retour.

  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
    Pourquoi n'utilises-tu pas le goto et la boucle ????


  5. #5
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut
    Parce qu'en fait, j'ai mis en place le script hier avant ton retour, du coup je l'ai mis en prod hier soir avant de débaucher.
    Mais comme je vais devoir y ajouter des sauvegardes d'ici peu, je testerais sur un petit script avec un seul petit backup le goto sur la boucle.
    Si ça fonctionne bien, je supprimerais le deuxième script

  6. #6
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 18
    Par défaut Optimisation
    J'ai donc avancé sur le sujet, peut-être que des personnes ont déjà eu ce soucis ou l'auront un jour. Voici donc mon script avant d'expliquer mon problème:

    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
    SET /a ERROR=0
    :START
    echo "Et c'est reparti pour un tour"
    :XXXXX
    powershell "D:\ScriptsBackup\XXXXX.ps1" ;
    echo XXXXX %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %ERRORLEVEL% >> "D:\ScriptsBackup\LOG-BKP.txt" ;
    IF %ERRORLEVEL%==0 GOTO YYYYYY
    ELSE
    (
    SET /a ERROR=%ERROR%+1
    IF %ERROR% LEQ 3 GOTO XXXXX
    ELSE GOTO YYYYY
    )
    :YYYYY
    powershell "D:\ScriptsBackup\YYYYY.ps1" ;
    echo YYYYY %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %ERRORLEVEL% >> "D:\ScriptsBackup\LOG-BKP.txt" ;
    IF %ERRORLEVEL%==0 GOTO XXXXX
    ELSE
    (
    SET /a ERROR=%ERROR%+1
    IF %ERROR% LEQ 3 GOTO START 
    ELSE GOTO eof
    )
    Dans l'idée, je voulais donc faire un script BATCH que je passerais en service qui me permette de lancer des scripts powershell les uns après les autres sans que l'humain ait besoin d'intervenir, qu'il y ait une erreur ou pas, tout en me faisant un fichier de logs avec les renseignements dont j'ai besoin.

    La rotation avec ce système fonctionne très bien, par contre, mon %ERRORLEVEL% me pose des soucis, étant donné qu'il me renvoie l'état du .EXE du powershell et non l' ERRORLEVEL dans le powershell.
    Ma première question est donc de savoir s'il est possible de checker la bonne exécution du script dans le powershell et non le programme (qui lui me renvoie forcément toujours 0).
    Et ma deuxième problématique, serait de pouvoir dire à mon script batch, d'aller chercher la dernière ligne de mes logs pour reprendre à la dernière sauvegarde faite en cas de coupure.

    Je pense qu'on rentre dans du plus technique, peut-être de l'infaisable, mais je suis ouvert à tout conseil.

    Merci beaucoup.

Discussions similaires

  1. Boucle Infinie dans le Sudoku
    Par HqSeO dans le forum Mathématiques
    Réponses: 7
    Dernier message: 12/02/2009, 13h42
  2. Réponses: 1
    Dernier message: 28/07/2006, 11h11
  3. Réponses: 29
    Dernier message: 17/06/2006, 13h04
  4. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 12h10
  5. Réponses: 15
    Dernier message: 24/05/2005, 08h34

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