Obtenir un PID

Obtenir un PID - Shell/Batch - Programmation

Marsh Posté le 22-07-2005 à 08:25:00    

Bonjour,
 
J'aurais besoin d'obtenir le PID d'un processus particulier que je lance avec un bat, j'ai pensé a faire un tslist avant et apres et a faire la difference entre les 2  = le PID en question ... le problème est que je m'y connais tres mal (pour dire pas du tout) en batch ... J'ai quelques notions de Shell linux ... mais sinon c'est que du Java & co :D... Donc je me trouve assez vite coincé ... est-ce que qqn a plus simple que ma petite magouille?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-07-2005 à 08:25:00   

Reply

Marsh Posté le 22-07-2005 à 10:25:45    

T'es sous quel OS ?

Reply

Marsh Posté le 22-07-2005 à 10:36:27    

WinXP ...  
Enfait pour le moment en parsant un peu j'arrive a tomber sur :
 
PID: monpid et là j'essaie de parser ça avec un for pour que ca me choppe que le monpid ... mais ça marche pas encore top :p


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-07-2005 à 10:40:55    

Poste ton code. On va voir si on peut t'aider à corriger/améliorer.

Reply

Marsh Posté le 22-07-2005 à 10:47:10    

Sinon tu peux utiliser le Perl (active Perl + module Win32) pour récupérer ton PID.

Reply

Marsh Posté le 22-07-2005 à 11:02:23    

J'avais pensé a utiliser Perl / VB mais le truc c'est que ce batch doit etre utilisé par un bon nombre de personnes, qui n'ont pas forcemment Perl/VB/autre installé ...  
Pour le moment j'en suis la :  
 

Code :
  1. @echo off
  2. set a =  tasklist /FI "IMAGENAME eq processus.exe" /FO list | FIND "PID"
  3. set ps1 =
  4. set ps2 =
  5. set pst =
  6. set out =
  7. FOR /F %i IN %a% DO (
  8. IF NOT(%i == PID:)
  9.   %ps1% =%ps1% %i
  10. )
  11. .... lancement du processus ...
  12. %a% = tasklist /FI "IMAGENAME eq processus.exe" /FO list | FIND "PID"
  13. FOR /F %i IN %a% DO (
  14. IF NOT(%i == PID:)
  15.   %ps2% =%ps2% %i
  16. )
  17. %out% = fc ps1 ps2
  18. FOR /F %i IN %out% DO (
  19. IF NOT(%i == Comparing)
  20. %pst% = %pst% %i
  21. )
  22. echo %pst%


Désolé pour le massacre, c'est la 1ere fois que je touche a du batch ... :(


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-07-2005 à 11:15:42    

Ca se voit :)
 
Tu dois avoir plein d'erreurs aussi.
 
C'est quoi le output déjà et qu'en penses-tu des erreurs que tu reçois ?


Message édité par wackevat le 22-07-2005 à 11:15:56
Reply

Marsh Posté le 22-07-2005 à 11:18:09    

Donc l'erreur que je recois me dit que je sais pas utiliser le for ... apperemment il aime pas ce qu'il y a avant le DO ..  
L'output serai un String sur plusieurs lignes je suppose ...
 
Je vois pas trop ou tu veux que j'en vienne ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-07-2005 à 11:46:03    

Pour le moment tu ne connais pas encore la syntaxe des commandes.
 
Alors :
- commenter la première ligne (@echo off) pour voir à quelle ligne tu rencontres la première erreur.
 
- for /?; set /?; if /? enfin nom_de_commande /? pour apprendre la syntaxe.
 
Parce que comme ça, ça ne va pas marcher du tout.

Reply

Marsh Posté le 22-07-2005 à 12:07:44    

Moui j'esperais de ne pas devoir lire completement la longue doc de Find (que je trouve encore plus trouble qu'un man :D) mais bon ... fallait quand meme que je m'y attende ;)
 
 Je te tiens informé de mes recherches eventuelles ;)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 22-07-2005 à 12:07:44   

Reply

Marsh Posté le 22-07-2005 à 12:12:14    

oki, @+

Reply

Marsh Posté le 22-07-2005 à 15:19:34    

Il est pas mal power Batch et sinon ben je vais test de le faire car c'est interessant de pouvoir retrouver le PID.
Donc apparement tu est sous XP mais un truc:
Pourkoi tu veut le recup le PID car si c'est pour le KILL tskill le nom du process marche.
Sinon le but est de le mettre dans un fichier et de le retrouver avec son nom:
Du style tasklist /svc>temp.txt
et aprés avec une boucle for in (temp.txt) findstr le truc en gros.
Sinon y a POWERBATCh qui a pas mal d'aide pour la creation de batch!!
Sinon je vais essailler de le faire si tu trouve pas entre temp.
Le premier ki trouve a gagné!!!

Reply

Marsh Posté le 22-07-2005 à 16:43:33    

Oui c'est pour le killer, mais le probleme est que plusieurs instances du meme processus existent et qu'une seule d'entre-elles doit etre detruite ;).  
Je verrai ça des que j'ai un moment la semaine prochaine ... parceque c'est au boulot que j'ai XP..a ++


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 25-07-2005 à 11:41:57    

Si elle ont le mm nom sa va etre dure!!!
C'est koi la tache que tu veut kill?
C'est koi ce processus!
C'est pas sur un serveur?
J'ai pas eu le temp de test un script mais je regarde se midi!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed