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 :

Lancer un executable depuis un script


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Lancer un executable depuis un script
    Bonjour à tous, désolé de reposter une fois de plus après mon post d'hier, mais je rencontre quelques difficultés !

    Je m'explique j'ai un script en perl, et j'aimerais que ce script lance un executable quand je l'ouvre (Je suis sous Windows 7)

    J'ai essayé de quelques manières différentes de faire fonctionner l'appel de la fonction, mais en vain.
    J'ai cherché sur le forum, mais rien de ce que je n'ai trouvé ou essayer ne fonctionne.
    Je vous expose mon code, en espérant que vous pourrez m'aider à comprendre mon erreur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $cmd = ("Z://dossier//executable");
              system($cmd);
    Merci d'avance pour vos réponses !

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour, as-tu essayé de mettre ton script directement dans le même répertoire que celui qui s’exécute?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Oui j'ai essayé et rien n'y fait, le script se lance sans problème, mais l'executable non.

  4. #4
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Donc tu as fait , as-tu essayé avec la fonction exec sinon?

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je pensais que ça ne s'utilisait qu'avec l'invite de commande,
    du coup je viens d'essayer comme ceci et ca ne fonctionne pas :

    Je ne suis pas sûr du tout que la synthaxe soit correcte, je n'ai jamais utilisé cette commande et je suis donc aller chercher sur les tutos.

  6. #6
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Ton exécutable n'a pas d'extension? peux-tu faire cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (-f $tonexecutable)   
    {
        print "le fichier existe";
        system($tonexecutable);
    }

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $cmd = ("Z://www//SISM//notepad.exe");
    #exec '/bin/echo' $cmd;
     
    if (-f $cmd)   
    {
        print "le fichier existe";
        system($cmd);
    }
    Voilà ce que j'ai essayé, mon éxécutable à .exe pour extension.

    Le print ne s'affiche même pas, j'imagine donc que le problème doit venir du chemin d'accès, mais pourtant il m'a l'air correct.

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Une commande du type
    Fonctionne parfaitement si $cmd est une commande DOS ou shell correcte, j'en suis absolument sûr. Mais ici, je pense que tu as probablement deux problèmes:

    - J'utilise peu Perl sous Windows, mais je pense que le chemin n'est sans doute pas bon. L'utilisation de double barres obliques "//" est OK à l'intérieur d'un programme Perl, mais là c'est une commande que tu passes à DOS, il faut donc utiliser des backslashes "\". Je pense même qu'il te faut deux backslashes "\\", afin que le premier protège le second.

    - L'instruction system "forke" pour créer un sous-processus en tâche de fond, puis exécute la commande dans le sous-processus. Ce qui ne peut sans doute pas marcher un programme interactif comme notepad: même s'il se lance, tu ne l'auras sans doute pas à l'écran (à moins que tu ne le voies dans la barre des tâches, j'en doute un peu, mais sait-on jamais.

    Pour séparer les deux problèmes, essaie la solution au premier problème avec un programme non-interactif (par ex. un autre programme Perl). Tu y verras déjà plus clair, je pense.

    EDIT: je viens d'essayer avec Perl sous Windows, finalement ce que j'ai dit à propos des programmes interactifs (en bleu ci-dessus) est inexact. Ça marche et ça lance bien notepad.

  9. #9
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Bonjour,

    Sauf si tu l'as déplacé, le nom de ton fichier notepad.exe à une drôle d'allure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $cmd = ("Z://www//SISM//notepad.exe");
    Le print ne s'affiche même pas, j'imagine donc que le problème doit venir du chemin d'accès, mais pourtant il m'a l'air correct.
    Vérifie quand même...

    Sous Windows tout ceci fonctionne :
    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
    system "C:/Windows/notepad.exe";
    system "C://Windows//notepad.exe";
    system "C:\\Windows\\notepad.exe";
     
    my $Cmd = "C:/Windows/notepad.exe";
    system $Cmd;
     
    my $Cmd = "C://Windows//notepad.exe";
    system $Cmd;
     
    if (-f $Cmd)   
    {
        print "le fichier existe";
        system($Cmd);
    }
     
    my $Cmd = "C:\\Windows\\notepad.exe";
    system $Cmd;
    Seul ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "C:\Windows\notepad.exe";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    E:\_DEV\DevPerl>perl system.pl
    le fichier existe'C:Windows' n'est pas reconnu en tant que commande interne
    ou externe, un programme exécutable ou un fichier de commandes.
    NB : un seul \ est interprété comme caractère d’échappement, dans ce cas il faut le doubler (en quelque sortes pour indiquer que le caractère qui suit, donc : le 2ème \ est bien à interpréter comme un \
    Si on met un seul \ il est demandé que le W soit bien interprété comme un W,
    mais dans ce cas il manque un \ dans le path du fichier, d'ou l'erreur 'C:Windows' n'est pas reconnu...

  10. #10
    Membre chevronné Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 392
    Points : 2 044
    Points
    2 044
    Par défaut
    Je pense comprendre le pb.

    Il semble que tu aies copié notepad.exe sur un disque mappé Z:
    J'ai un moment, pour valider j'ai fait de même...

    Sur le disque D: d'un PC (en XP) DYDY j'ai créé D:\www\SISM
    J'y ai copié le notepad.exe du C:\Windows\notepad.exe (Donc celui en XP)

    Sur le PC MIDO en W7 j'ai mappé le lecteur de DYDY en Z:

    Effectivement ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $cmd = ("Z://www//SISM//notepad.exe");
    #exec '/bin/echo' $cmd;
     
    if (-f $cmd)   
    {
        print "le fichier existe";
        system($cmd);
    }
    Par contre ceci fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $cmd = ("Z:\\SISM\\notepad.exe");
    #exec '/bin/echo' $cmd;
     
    if (-f $cmd)   
    {
        print "le fichier existe";
        system($cmd);
    }
    NB : lorsqu'on partage un répertoire depuis la racine (www), le nom de ce répertoire est remplacé par la lettre du lecteur ( Z: )
    Donc le \www n'est plus vu, il est normal que ton "Z://www//SISM//notepad.exe" ne voit même pas le fichier...

    Par contre "Z:\\SISM\\notepad.exe" devrait être OK

  11. #11
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    En fait, avec une installation "normale" de Windows, il n'y a même pas besoin du chemin:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    system ("notepad")
    fonctionne parfaitement et ouvre bien une fenêtre notepad.

Discussions similaires

  1. lancer un executable depuis une page
    Par manshoon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/08/2006, 12h33
  2. lancer un .bat depuis un script python
    Par manu.c dans le forum Général Python
    Réponses: 9
    Dernier message: 02/05/2006, 15h41
  3. [Système] lancer l'execution d'un script
    Par alexandra dans le forum Langage
    Réponses: 6
    Dernier message: 04/04/2006, 11h28
  4. Réponses: 10
    Dernier message: 25/01/2005, 14h06
  5. [web] lancer page HTML depuis un script perl
    Par lilou0210 dans le forum Web
    Réponses: 7
    Dernier message: 05/11/2004, 17h04

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