kill un processus

kill un processus - Shell/Batch - Programmation

Marsh Posté le 08-05-2014 à 11:37:31    

Bonjour,
Alors voilà, j'aimerais couper uTorrent lorsque je joue à un jeu en ligne (ici, League of Legends) car il bouffe ma bande passante.
Mais étant une feignasse  :D , je ne veux pas avoir à cliquer sur l'icône utorrent pour le quitter totalement, ou encore passer par le gestionnaire des tâche. Je ne pense pas forcément à l'éteindre.
Donc je me suis mis en tête de créer un script batch qui pourrait le faire à ma place.
 
Alors j'ai fais ça :  

Code :
  1. @echo off
  2. cd
  3. cd "chemin_vers_le_dossier_du_jeu"
  4. start lol.launcher.exe
  5. tskill uTorrent
  6. exit


 
Mais voilà, ça ne fonctionne pas et je ne comprends pas pourquoi, j'ai testé avec tskill et taskkil avec plein de syntaxe différente mais rien n'y fait.
Comment faire ?  
 
PS : je suis sous Windows 7


---------------
Poupi Poupi Poupipou
Reply

Marsh Posté le 08-05-2014 à 11:37:31   

Reply

Marsh Posté le 08-05-2014 à 15:03:48    

tasklist te permet de lister les process qui tournent sur ta machine. Tu noteras que c'est le nom complet de l'exécutable qui est utilisé, donc plus probablement uTorrent.exe que simplement uTorrent


Message édité par theshockwave le 08-05-2014 à 15:04:01

---------------
last.fm
Reply

Marsh Posté le 08-05-2014 à 22:14:55    

Bonsoir,
Si le tskill est trop violent (fichier corrompu ou ce genre de chose) voyez https://code.google.com/p/cutorrent/ peut être...


Message édité par breizhbugs le 08-05-2014 à 22:15:41

---------------
Seul Google le sait...
Reply

Marsh Posté le 09-05-2014 à 11:54:07    

Bon j'ai fait autrement, j'ai installer la suite PSTools pour avoir le pskill et maintenant ça fonctionne parfaitement.
 
J'aimerais complexifier la chose un peu maintenant. le processus "LolLaucher.exe" reste allumé tant que le jeu est en fonction. Avec cette info, j'aimerais que le script rallume utorrent automatiquement dès que LolLauncher.exe est absent des processus.
 
En clair, je veux que mon script fasse :
- Lorsque LoL s'ouvre, utorrent s'éteint [:yann39]
- Lorsque LoL se ferme, utorrent se rallume [:judgedredd:2]
 
Donc je pense qu'il faut une boucle où le script attendra, mais il ne faut pas que la boucle bouffe des ressources CPU pour rien ^^'.
 
Auriez-vous une idée ?
[:antoine81]  


---------------
Poupi Poupi Poupipou
Reply

Marsh Posté le 09-05-2014 à 15:34:16    

P'tit Serpent a écrit :

Bon j'ai fait autrement, j'ai installer la suite PSTools pour avoir le pskill et maintenant ça fonctionne parfaitement.
 
J'aimerais complexifier la chose un peu maintenant. le processus "LolLaucher.exe" reste allumé tant que le jeu est en fonction. Avec cette info, j'aimerais que le script rallume utorrent automatiquement dès que LolLauncher.exe est absent des processus.
 
En clair, je veux que mon script fasse :
- Lorsque LoL s'ouvre, utorrent s'éteint [:yann39]
- Lorsque LoL se ferme, utorrent se rallume [:judgedredd:2]
 
Donc je pense qu'il faut une boucle où le script attendra, mais il ne faut pas que la boucle bouffe des ressources CPU pour rien ^^'.
 
Auriez-vous une idée ?
[:antoine81]  


 
Voila le code que j'ai bidouillé :


Code :
  1. @echo off
  2. start notepad++
  3. taskkill /IM notepad.exe
  4. :loop-in-batch
  5. tasklist /fi "imagename eq notepad++.exe" | find ":" > nul
  6. if errorlevel 1 (
  7. REM wait 1s
  8. ping 192.0.2.2 -n 1 -w 1000 > nul
  9. goto loop-in-batch
  10. ) else (
  11. start notepad
  12. )
  13. pause


Message édité par honrisse le 09-05-2014 à 15:38:45
Reply

Marsh Posté le 09-05-2014 à 17:21:16    

Merci pour ta réponse, mais j'ai réussi à me créer mon script seul ^^'
Pour ceux que ça intéresse :

Code :
  1. @echo off
  2. FOR /F "eol=; delims=," %%a IN (starter.cfg) DO set uTorrent_path=%%a
  3. start lol.launcher.exe
  4. tasklist /FI "IMAGENAME eq uTorrent.exe" 2>NUL | find /I /N "uTorrent.exe">NUL
  5. if "%ERRORLEVEL%"=="0" taskkill /f /im uTorrent.exe
  6. if not "%ERRORLEVEL%"=="0" echo uTorrent n'est pas actif.
  7. timeout 30 /nobreak
  8. :loop
  9. tasklist /FI "IMAGENAME eq LoLLauncher.exe" 2>NUL | find /I /N "LoLLauncher.exe">NUL
  10. if "%ERRORLEVEL%"=="0" timeout 5 & goto loop
  11. tasklist /FI "IMAGENAME eq uTorrent.exe" 2>NUL | find /I /N "uTorrent.exe">NUL
  12. if "%ERRORLEVEL%"=="0" taskkill /im uTorrent.exe
  13. if not "%ERRORLEVEL%"=="0" cd /d %uTorrent_path% & start uTorrent.exe & timeout 1 & goto loop


 
 
Le fichier starter.cfg ne contient que le chemin d'accès vers uTorrent, comme ça je peux donner mon script à mes potes sans qu'il n'ai a rentrer dans le code (surtout que ce sera un .exe)  :)
Je suis en train de l'améliorer, si vous avez des suggestions ou des remarques je suis toujours preneur :D


---------------
Poupi Poupi Poupipou
Reply

Marsh Posté le 09-05-2014 à 18:39:14    

P'tit Serpent a écrit :

Merci pour ta réponse, mais j'ai réussi à me créer mon script seul ^^'
Pour ceux que ça intéresse :

Code :
  1. @echo off
  2. FOR /F "eol=; delims=," %%a IN (starter.cfg) DO set uTorrent_path=%%a
  3. start lol.launcher.exe
  4. tasklist /FI "IMAGENAME eq uTorrent.exe" 2>NUL | find /I /N "uTorrent.exe">NUL
  5. if "%ERRORLEVEL%"=="0" taskkill /f /im uTorrent.exe
  6. if not "%ERRORLEVEL%"=="0" echo uTorrent n'est pas actif.
  7. timeout 30 /nobreak
  8. :loop
  9. tasklist /FI "IMAGENAME eq LoLLauncher.exe" 2>NUL | find /I /N "LoLLauncher.exe">NUL
  10. if "%ERRORLEVEL%"=="0" timeout 5 & goto loop
  11. tasklist /FI "IMAGENAME eq uTorrent.exe" 2>NUL | find /I /N "uTorrent.exe">NUL
  12. if "%ERRORLEVEL%"=="0" taskkill /im uTorrent.exe
  13. if not "%ERRORLEVEL%"=="0" cd /d %uTorrent_path% & start uTorrent.exe & timeout 1 & goto loop


 
 
Le fichier starter.cfg ne contient que le chemin d'accès vers uTorrent, comme ça je peux donner mon script à mes potes sans qu'il n'ai a rentrer dans le code (surtout que ce sera un .exe)  :)
Je suis en train de l'améliorer, si vous avez des suggestions ou des remarques je suis toujours preneur :D


 
Ca change pas grand chose mais on peut remplacer if / if not par if / else je pense.
 
 :??:

Code :
  1. :loop
  2. tasklist /FI "IMAGENAME eq LoLLauncher.exe" 2>NUL | find /I /N "LoLLauncher.exe">NUL
  3. if "%ERRORLEVEL%"=="0" timeout 5 & goto loop
  4. tasklist /FI "IMAGENAME eq uTorrent.exe" 2>NUL | find /I /N "uTorrent.exe">NUL
  5. if "%ERRORLEVEL%"=="0" taskkill /im uTorrent.exe
  6. if not "%ERRORLEVEL%"=="0" cd /d %uTorrent_path% & start uTorrent.exe & timeout 1 & goto loop


 
Je suis peut être fatigué mais si  je ne me trompe pas, on a :

  • si le processus LoLLauncher.exe n'existe pas, on vérifie si uTorrent.exe existe
  • si uTorrent.exe n'existe pas, on le lance, on loope, on vérifie LoLLauncher et si uTorrent.exe existe on le ferme et on quitte ?  :??:  

Reply

Marsh Posté le 09-05-2014 à 18:54:12    

  • Si le launcher existe, alors on attend et on retente dans 5sec
  • Si le launcher n'existe pas, on test si uTorrent est allumé (pour éviter des doublons si on l'a allumer durant le jeu)
  • Si uTorrent est allumé, on le réduit
  • Si uTorrent est absent, alors on reteste si launcher est là, puis on allume uTorrent et on le réduit


En fait c'est pour réduire les lignes de codes, retester les premieres lignes ne change pas grand chose lorsqu'on est arrivé a la ligne 6.
C'est juste pour éviter d'avoir deux boucles loop1 et loop2 ^^'
 
 
PS: chez moi le else n'est pas reconnu donc j'ai fais sans :D


Message édité par P'tit Serpent le 09-05-2014 à 18:54:46

---------------
Poupi Poupi Poupipou
Reply

Marsh Posté le 09-05-2014 à 20:33:54    

taskkill /IM utorrent.exe /F
start /WAIT lol.launcher.exe
start utorrent.exe


 
 :??:

Reply

Sujets relatifs:

Leave a Replay

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