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 :

Lancement puis Arrêt d'un process


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut Lancement puis Arrêt d'un process
    Bonjour,

    J'ai un petit soucis. Suite à un bug d'une application je dois lancer un executable, le laisser s'executer quelques secondes puis fermer cette application.

    donc la commande devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start  NomDelExe.exe param1 
    delay 30
    taskill /IM NomDelExe.exe
    ca fonctionne très bien mais en fait le problème est qu'il peut y avoir d'autre process avec le meme nom et que je ne dois pas fermer.

    Sous unix pas de problème , on peut récuperer le PID juste après avoir lancé le process mais en batch sous DOS je ne vois pas.
    Si pas possible, connaissez vous une application qui pourrait m'aider ?

  2. #2
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    essayes-ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    
    for /f "tokens=2" %%a in (
      'tasklist /nh /fi "imagename eq tonprocessus.exe"') do set pid=%%a
    taskkill /pid %pid%

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    merci pour ta réponse mais ça ne corrige pas mon problème
    car j'ai plusieurs processus qui tourne avec le même nom et je veux fermer uniquement que celui que je viens de lancer.

    donc la commande tasklist avec le filtre imagename n'est pas adapté.

    Je me demande si c'est possible sous windows ?
    Y a t il une application qui peut lancer un exe et me donner son PID ?

    (Sous unix , apres le lancement on recupere le PID avec $$ ou $!)

  4. #4
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par Totopoilenbiais Voir le message
    merci pour ta réponse mais ça ne corrige pas mon problème
    car j'ai plusieurs processus qui tourne avec le même nom et je veux fermer uniquement que celui que je viens de lancer.

    donc la commande tasklist avec le filtre imagename n'est pas adapté.

    Je me demande si c'est possible sous windows ?
    Y a t il une application qui peut lancer un exe et me donner son PID ?

    (Sous unix , apres le lancement on recupere le PID avec $$ ou $!)
    salut,

    j'ai l'impression que tu n'a même pas essayé le bout de code que je t'ai donné



    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
    @echo off
    :: On lance 3 instances de notepad.exe
    start /min notepad.exe
    start /min notepad.exe
    start /min notepad.exe
    echo :: test PID 1
    tasklist /nh /fi "imagename eq notepad.exe"
    echo.
    echo Pressez sur une touche pour lancer une autre instance de NOTEPAD
    pause>nul
    start /min notepad.exe
    echo :: test PID 2
    tasklist /nh /fi "imagename eq notepad.exe"
    ::
    for /f "tokens=2" %%a in (
      'tasklist /nh /fi "imagename eq notepad.exe"') do set pid=%%a
    echo ---------------------^>^> PID=%pid% ^<^<----------------------------------
    ::taskkill /pid %pid% >nul
    taskkill /im notepad.exe>nul
    pause

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    Salut Totopoilenbiais,

    Au lieu de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start  NomDelExe.exe param1 
    delay 30
    taskill /IM NomDelExe.exe
    Essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    start "TitreTEST" NomDelExe.exe param1 
    delay 30
    taskkill /F /FI "WINDOWTITLE eq TitreTEST"

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Tu peux utiliser WMIC (dépendance : service WMI actif) pour retrouver le PID :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WMIC PROCESS CALL Create "calc.exe"
    Exécution (Win32_Process)->Create()
    Méthode exécutée.
    Paramètres de sortie:
    instance of __PARAMETERS
    {
    ProcessId = 3684;
    ReturnValue = 0;
    };
    Reste à analyser la chaîne renvoyée (boucle For /F) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WMIC PROCESS CALL Create "calc.exe"|find "ProcessId" /I

    ProcessId = 3684;

  7. #7
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Sinon, tu peux essayer de mémoriser le PID de l'application en lançant un batch avant et après son lancement : la différence dans la liste des PID ayant le même nom d'exécutable, c'est celui que tu recherches (et qu'il faudra flinguer / relancer).

    En dehors de ça, si l'application ne te donne pas elle-même son PID, ou que tu ne le récupère pas à la création, c'est un peu mort si plusieurs applications ont le même nom...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    Bonsoir,

    En effet, j'ai lu trop vite "I m here", désolé et merci pour ta réponse qui marche très bien (je viens de tester cette fois ci
    ( J'avais fait avant un test avec tasklist qui ne marchais pas avant d'ou ma réponse trop rapide )

    Sinon mon application exe n'a pas d'interface graphique donc la solution de sokai ne marche pas ds ce cas précis.
    et ce serveur est encore sous Microsoft 2000 donc wmic n'existe pas, j'ai recopié le wmic.exe dans un repertoire mais ca n'avait pas l'air de fonctionner

    En tout cas Merci à tous pour vos réponse !

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    En fait non c'est pas fini.
    Après avoir fait mon script et tester sur mon poste, je vais sur le serveur et la : tasklist et taskkill non reconnu ...
    En effet c'est encore Microsoft 2000
    A priori j'ai vu qu'il faut utiliser tslist et tskill sous cet environnement

    Problème : Pour tskill pas de problème mais tslist n'est pas reconnu non plus. Je n'ai rien trouvé sur le site de microsoft pour l'installation.

    Est ce la même syntaxe ?

Discussions similaires

  1. (débogage) Lancement et arrêt d'un projet très long
    Par feralp dans le forum Visual Studio
    Réponses: 7
    Dernier message: 05/09/2013, 19h04
  2. Réponses: 1
    Dernier message: 16/11/2008, 16h46
  3. lancement de deux ( ou n) process en background par la fonction system()
    Par Mokhtar BEN MESSAOUD dans le forum Bibliothèque standard
    Réponses: 8
    Dernier message: 04/01/2008, 18h34
  4. [Système][Process]Probleme de lancement d'un .sh
    Par jool dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 04/05/2005, 11h58
  5. [Process]Lancement d'applictions via bath sous Dos.
    Par juflata dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/06/2004, 14h03

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