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 :

Capturer le PID d'un exe lancé depuis un batch


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 107
    Points : 56
    Points
    56
    Par défaut Capturer le PID d'un exe lancé depuis un batch
    Bonjour à tous

    J'ai créé un script batch A qui lance l'exécution du .exe situé dans le même répertoire.
    Je souhaite lancer plusieurs fois ce script A (ce qui va donc lancer plusieurs fois le .exe)

    Mon problème est que mon script A démarre le .exe, mais je dois par la suite stopper le .exe lancé.
    Ma question est donc :

    Comment lancer un .exe depuis un script batch et capturer son PID. Si le script A connait le PID de l'exe qui a été lancé, il pourra facilement le fermer par la suite.

    Un exemple d’exécutions du script pour être un peu plus parlant :

    > J'execute mon script A (il s'ouvre dans le shell 1)
    > J'execute mon script A (il s'ouvre dans le shell 2)
    > (shell 1) => le script A execute le .exe B (PID 1001)
    > J'execute mon script A (il s'ouvre dans le shell 3)
    > (shell 2) => le script A execute le .exe B (PID 1002)
    > (shell 3) => le script A execute le .exe B (PID 1003)
    > (shell 1) => le script A stop le .exe B (il a stocké qu'il a lancé le exe au PID 1001, il stop donc le processus au PID 1001)
    > (shell 2) => le script A stop le .exe B (il a stocké qu'il a lancé le exe au PID 1001, il stop donc le processus au PID 1002)
    > (shell 3) => le script A stop le .exe B (il a stocké qu'il a lancé le exe au PID 1001, il stop donc le processus au PID 1003)

    Mes questions :
    1) Comment executer le .exe dans mon batch ?
    2) Comment capturer le PID de l'exe qui est lancé dans le batch ?
    3) Comment stoper par la suite un processus au PID = xxxx dans mon script batch ?

    Les questions 1 & 3, je pense pouvoir trouver facilement la réponse seul sur le net..mais si jamais vous voulez y répondre, je ne suis pas contre
    La question 2 est la plus importante

    En vous remerciant !

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Bonjour à toi,

    En batch ça me parait compliqué !

    Par contre avec un VBS ou PS ça serait beaucoup plus simple
    Par pitié !!!! :Si vous ne savez pas faire cliquez ici !
    Citation Envoyé par Marc-L
    C'est dommage que parfois tu sois aussi lourd que tu as l'air intelligent…

  3. #3
    Membre éclairé Avatar de devilsnake88
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Janvier 2013
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2013
    Messages : 453
    Points : 809
    Points
    809
    Par défaut
    Salut,
    Je t'ai fais une petite escquisse de code (pas testé):

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @echo off&cls
    set current_path=%~dp0
    set current_path_modified=%current_path:~0,-1%
    set "programname=programme.exe"
     
    start /wait cmd /C "%current_path_modified%\%programname%"
    for /f "tokens=1" %%a in ('wmic PROCESS where "Name='%programname%'" get ProcessID ^| findstr [0-9]') do set programmepid=%%a
    echo %programname% est lance avec le PID %programmepid%
    taskkill /im %programname% /f
    pause

    Dans ce code je te récupère le PID mais tu n'en as pas besoin parce que je taskkill le process et pas via le PID, voici le code pour taskkill sans chercher le PID:
    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    FOR /F %%x IN ('tasklist /v ^| findstr /I "%programname%"') DO ...

    Je t'invite évidemment à mettre des conditions du genre si le programme est lancé, alors tu fais ceci, sinon tu fais cela, etc...
    ________________________________________________________________
    N'oublie pas de faire une sauvegarde avant d'exécuter des scripts...
    Si j'ai ton problème, un petit fait toujours plaisir!
    ________________________________________________________________

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    Voici comment récupérer le pid pour un lancement de 'notepad.exe' par exemple :

    Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for /f "tokens=2 delims==; " %%a in (' wmic process call create "notepad.exe" ^| find "ProcessId = " ') do set PID=%%a
    echo %PID%
    pause

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 183
    Points : 5 754
    Points
    5 754
    Par défaut
    @devilsnake88

    Je ne pense pas que ta solution soit viable car si il y a 3 process du même nom (ca semble correspondre à la demande), tu ne récupérera pas forcement le PID du process que tu vient de lancé.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2012, 14h06
  2. Connaitre PID d'un process lancé avec exec()
    Par hugo123 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 14h28
  3. Macro Excel lancée depuis Acces
    Par Invité dans le forum Access
    Réponses: 4
    Dernier message: 18/01/2006, 14h25
  4. Réponses: 10
    Dernier message: 08/02/2005, 16h04
  5. Fermer l'animation (swf/exe lancé depuis Windows)
    Par ZiZouJH dans le forum Flash
    Réponses: 3
    Dernier message: 14/01/2003, 10h00

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