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

Langage Perl Discussion :

Récupération du résultat d'une commande shell


Sujet :

Langage Perl

  1. #1
    klu
    klu est déconnecté
    Nouveau Candidat au Club
    Inscrit en
    Février 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Récupération du résultat d'une commande shell
    Bonjour,
    Je suis en train de coder mon premier script la récupération du résultat d'une commande shell me pose soucis.

    J'utilise la commande system mais quoi que je fasse je récupère toujours à mon n'avis le code de retour de la commande mais pas le résultat.

    J'ai regardé dans la documentation à ma disposition, mais je doit reconnaître que cela reste plus qu'obscur pour moi.

    Si quelqu'un peut m'aider ...

  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794

  3. #3
    Membre du Club Avatar de goblin
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Personelement j'ai essayé les méthodes de ce thread aucune ne marche sur mon windows xp pro , je continue de chercher ...

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    comment ca ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $res = `ma_commande.exe`;
    normalement ceci te permet de récupérer le résultat de ta commande dans $res. Après, tu peux choisir le type en fonction de ce que tu as à récupérer (comme un tableau pour une liste de fichiers comme dans le thread en question).

    @+
    Mr6

  5. #5
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Il y a juste u petit défaut à ce script : si l'utilisateur doit rentrer une variable quelconque, cela ne sera pas affiché à l'écran, et donc l'utilisateur ne sera pas qu'il doit le faire et le programme attendra simplement la saisie...
    Mais si le programme ne fait que de l'affichage, alors le script fonctionne parfaitement !
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  6. #6
    Membre du Club Avatar de goblin
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    Voici ce que j'ai fait et qui ne marche pas !


    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
    #!/usr/bin/perl -w
    use strict;
     
    my $t = `pdftotext -f 0 -layout -enc UTF-8 -eol dos -nopgbrk csharp.pdf`;
     
    my $file = '<STDOUT>';
    open(ERROR, '>>$file');
    my $i = <ERROR>;
    clode (ERROR);
     
    open (FILE, ">>exit.txt");
    flock(FILE, 2);
    print FILE "$i";
    flock(FILE, 8);
    close (FILE);
    si je fait un print $t; j'ai droit a une magnifique erreur :

    Use of uninitialized value in string at C:\blablable\0.pl line 15
    print FILE "$i";
    voilou

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Normal... Tu n'essaie pas d'imprimer $t tu essaie d'imprimer $i...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open(ERROR, '>>$file');
    Là, tu ouvres en écriture à la fin du fichier (mode ajout '>>') le fichier nommé '<STDOUT>', et ensuite tu essaies de le lire.......

    Tu voulais sans doute écrire :
    à la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $file = '<STDOUT>';
    open(ERROR, '>>$file');
    my $i = <ERROR>;
    clode (ERROR);
    --
    Jedaï

  8. #8
    Membre du Club Avatar de goblin
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 62
    Points : 53
    Points
    53
    Par défaut
    En fait le but c de lancer pdftotext comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $t = `pdftotext -f 0 -layout -enc UTF-8 -eol dos -nopgbrk csharp.pdf`;
    et de récupérer les données du traitement de pdftotext dans une variable pour pouvoir faire un traitement dessus je ne sais pas si c'est parce que je suis sous windows mais je ne peut récupérer les données directement sur $t

    J'ai vue dans différente doc le mécanisme des pipes mais je n'ai pas tout compris

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Si tu peux, ça n'a rien à voir avec Windows ou pas Windows. Maintenant essaie de me donner un exemple clair qui ne marche pas, avec une autre commande que pdf2text (une commande disponible sur tous les windows, par exemple "echo") pour que je t'indique ce que tu fais incorrectement.
    Si ça marche avec les autres commandes, alors le problème vient de pdf2text et de la façon dont tu l'utilises. Rappelle toi qu'avec `` tu récupères la sortie standard du programme, pas la sortie d'erreur ni quoi que ce soit d'autre (en bref tu récupères la plupart des choses qui s'affiche à l'écran quand tu l'exécute en ligne de commande mais pas les rapports d'erreur).
    Il y a moyen de récupérer la sortie d'erreur si c'est ça le problème.

    --
    Jedaï

Discussions similaires

  1. Renvoyer le résultat d'une commande shell dans un gtk.TextView
    Par cabaflo dans le forum GTK+ avec Python
    Réponses: 1
    Dernier message: 13/03/2018, 17h53
  2. Récupération du résultat d'une requète dans un shell
    Par pmboutteau dans le forum Connexions aux bases de données
    Réponses: 1
    Dernier message: 05/03/2014, 14h37
  3. [Tcl\Tk] Récupération du résultat d'une commande
    Par kitigwen dans le forum Tcl/Tk
    Réponses: 3
    Dernier message: 05/08/2013, 13h30
  4. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  5. Ecrire le résultat d'une commande dans un fichier de l' OS
    Par Labienus dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/02/2004, 11h04

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