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

 C++ Discussion :

Récupération d'errorlevel robocopy


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut Récupération d'errorlevel robocopy
    Bonjour,

    Je travaille actuellement avec Visual Studio 2010 sur un logiciel permettant de lancer robocopy (utilitaire de windows visant a copier des repertoire) de façon périodique.

    Le programme fonctionne, mais afin de le pauffiner, j'aimerais savoir s'il est possible de récupérer toutes les erreurs qu'il y a pu avoir lors de la copie du repertoire afin d'inscrire tout ça dans un fichier.

    Je pensais récuperer la variable système ERRORLEVEL, est-ce possible?
    Si oui, peut-on m'aiguiller s'il vous plait?

  2. #2
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Bonjour,

    Robocopy génère (d'après ce que j'ai lu) un fichier log qui contiendra toutes les informations que tu souhaite. Et apparemment chaque erreur est inscrite en plus dans la sortie standard (le terminal qui a lancé robocopy.exe).

    La solution la plus simple pour ce que tu veux faire, si tout ce que je t'ai dit est faux ou ne fonctionne pas, serait d'écrire un script qui lance ton programme et traite les erreur récupérées par ERROR_LEVEL

    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut ajout des balises codes !
    Excelent, je te remerci
    J'ai cependant trouver une autre methode pour ceux que ca interesserait et qui ne souhaite pas passer par un batch

    il suffit d'écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int sterror = system(programmeComplet.c_str());  //Je lance robocopy
     
    if (sterror >= 4)   //S'il y a une erreur lors de la copie	
    {
     logSRV.seekp(0, ios::end);  //pointer en écriture sur la fin du fichier
    logSRV<<"erreur : "<<repertoires[j]<<endl;			
    }
    Voilà
    Et voici un lien avec tous les errorlevel possibles de robocopy :
    http://ss64.com/nt/robocopy-exit.html

    Vous comprendrez pourquoi ma condition est que l'erreur est >4

    Encore merci pour ta réponse

  4. #4
    Membre très actif

    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 685
    Par défaut
    Citation Envoyé par Sagee Voir le message
    Excelent, je te remerci
    J'ai cependant trouver une autre methode pour ceux que ca interesserait et qui ne souhaite pas passer par un batch

    il suffit d'écrire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int sterror = system(programmeComplet.c_str());  //Je lance robocopy
     
    if (sterror >= 4)   //S'il y a une erreur lors de la copie	
    {
     logSRV.seekp(0, ios::end);  //pointer en écriture sur la fin du fichier
    logSRV<<"erreur : "<<repertoires[j]<<endl;			
    }
    Voilà
    Et voici un lien avec tous les errorlevel possibles de robocopy :
    http://ss64.com/nt/robocopy-exit.html

    Vous comprendrez pourquoi ma condition est que l'erreur est >4

    Encore merci pour ta réponse

    Tu devrais vérifier le cas où (sterror==-1) car tu n'auras aucun retour dans ton fichier log, alors que la commande aura échouée, et tu pourras croire que le problème vient de robocopy alors que c'est l'appel à system() qui aura échoué.

    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
     
    //vers l'entête
    #define ROBOCOPY_ERRORS
    #define SYSTEM_ERROR
     
     
    //Puis plus bas dans le code...
    int stderr = system(programmeComplet.c_str());  //Je lance robocopy
     
    if (stderr >= ROBOCOPY_ERRORS)   //S'il y a une erreur lors de la copie	
    {
       logSRV.seekp(0, ios::end);  //pointer en écriture sur la fin du fichier
       logSRV<<"erreur : "<<repertoires[j]<<endl;			
    }
    else if (stderr == SYSTEM_ERROR)
    {
     
       logSRV.seekp(0, ios::end);  //pointer en écriture sur la fin du fichier
       logSRV << "erreur : la commande \""<< programmeComplet.C_str() << \"" a échoué."<< endl;			
    }

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 28
    Par défaut
    Ah, c'est bien vu de ta part, en effet

    Merci pour cette précision

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

Discussions similaires

  1. Récupération valeur d'une propriété type TStrings
    Par Stéphane Vaillant dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2003, 11h47
  2. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36
  3. Réponses: 5
    Dernier message: 09/01/2003, 11h55
  4. récupération d'images
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/08/2002, 18h36
  5. Réponses: 4
    Dernier message: 05/06/2002, 12h15

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