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érer les logs de la console Windows en C#


Sujet :

C#

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Récupérer les logs de la console Windows en C#
    Bonjour à tous,

    Alors comme je le précise dans le titre, je cherche a récupérer les logs des actions que je fais effectué dans la commande windows.
    Concrètement, dans mon applis, je fais divers xcopy et del, et je dois récupérer une trace de ces actions.

    Je ne sais pas si de base cela se stocke dans un fichier, ou si il faut ajouter une bride de code, ...

    Si vous avez une idée pour éclairer ma lanterne, je serais intéressé

    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 502
    Points
    1 502
    Par défaut
    Salut,

    De memoire lorsque tu lances un process il y a moyen d'avoir l'output:http://stackoverflow.com/questions/4...get-the-output

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Hello, merci de la réponse rapide

    J'ai adapté le code que j'ai pu voir en suivant votre lien.

    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
     
    private void runCommand()
            {
                Process process = new Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.Arguments = "/c DIR"; // Note the /c command (*)
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.StartInfo.RedirectStandardError = true;
                process.Start();
                //* Read the output (or the error)
                while (!process.StandardOutput.EndOfStream)
                {
                    TB_LOGS.Text = process.StandardOutput.ReadLine();
                    // do something with line
                }
                process.WaitForExit();
            }
    Cependant, je ne sais pas (je ne touche pas trop a la console windows) si je peux récupérer l'intitulé exacte, c'est à dire:

    xcopy C:\Users\...\Pictures\B C:\Users\...\Pictures\B /s /q
    15 File(s) copied
    Pour chacune des copies que je vais faire.

    Est ce une commande a changer dans la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    process.StartInfo.Arguments = "/c DIR"; // Note the /c command (*)
    ?

    Merci d'avance

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 502
    Points
    1 502
    Par défaut
    Re,

    normalement c'est exactement ce que tu recherches, juste a modifier le chemin des fichiers:

    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
     
    ProcessStartInfo s = new ProcessStartInfo("cmd.exe");
    s.Arguments = @"/c xcopy D:\foobar f:\foobar /e /y";
    s.CreateNoWindow = true;
    s.RedirectStandardOutput = true;
    s.RedirectStandardError = true;
    s.UseShellExecute = false;
    s.WindowStyle = ProcessWindowStyle.Hidden;
    int exitCode;
    string standardOutput; 
    string errorOutput;
    using (Process p = Process.Start(s))
    {
     standardOutput= p.StandardOutput.ReadToEnd();
     errorOutput = p.StandardError.ReadToEnd();
     p.WaitForExit(30*1000);
        exitCode = p.ExitCode;
    }
    MessageBox.Show(this, string.Format("ExitCode: {0}\r"+
        "Standard Output: \n\t{1}\r"+
        "Standard Error Output:\n\t{2}\r", 
        exitCode, 
        standardOutput.Replace("\n","\n\t"), 
        errorOutput.Replace("\n","\n\t")));
    }
    pris depuis (que j'ai lu en diagonale): https://social.msdn.microsoft.com/Fo...forum=netfxbcl

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Huuum après avoir tester, je n'arrive a obtenir que ceci comme résultat :

    ---------------------------
    ExitCode: 0
    Standard Output:

    Standard Error Output:
    ---------------------------
    J'ai donc cependant trouver une autre solution, qui est incomplete, mais plus optimiser. Peut être auriez vous une solution a cela :p

    Lors de la requete de la commande, j'ajoute ">> log.txt" a la fin ce qui va generer un fichier de log que je pourrais lire par la suite, cependant je ne recupere que l'output, et je voudrais recuperer l'input et l'output.

    ex :
    xcopy C:\...\test.txt D:\...\ /s /q >> log.txt
    Résultat dans le fichier txt :
    1 file(s) copied
    Et je souhaiterais obtenir :
    xcopy C:\...\test.txt D:\...\ /s /q
    1 file(s) copied

    Une idée ?

    Merci d'avance

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Points : 1 502
    Points
    1 502
    Par défaut
    Non, car il va sans doute locker ledit fichier en ecriture.

    Je reste sur l'idee du process et si j'y pense je regarderai ce soir chez moi.

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je suis revenu sur le process, finalement ça reste le mieux, mais mais malheureusement, je n'obtiens tjrs rien en output :/

    EDIT :

    j'ai repris exactement votre code, et lorsque je met

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.Arguments = @"/c dir";
    aucun problème je recupere bien l'arbo.
    Mais par contre avec ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s.Arguments = @"/c xcopy C:\Temp\Test\A\test.png C:\Temp\B\ /y /q /s";
    Je récupère juste un champ vide, je ne comprend pas vraiment pourquoi

    Si vous avez une explication, je suis preneur

    Merci

  8. #8
    Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2015
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Pas d'idée ?

Discussions similaires

  1. Récupérer les informations de l'utilisateur Windows en cours
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/12/2010, 00h13
  2. Récupérer les informations de l'utilisateur Windows en cours
    Par Thomas Lebrun dans le forum Contribuez
    Réponses: 0
    Dernier message: 28/12/2010, 22h50
  3. [FirePHP] Récupérer les logs dans un tableau php
    Par Concombre Masqué dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 10/12/2010, 11h48
  4. Ne pas afficher les log sur la console
    Par proDZ dans le forum Logging
    Réponses: 3
    Dernier message: 06/02/2010, 17h30
  5. récupérer les Logs console en vb.net
    Par marqs dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/09/2009, 12h11

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