des taskkill en cascade, pour un noob

des taskkill en cascade, pour un noob - Shell/Batch - Programmation

Marsh Posté le 06-03-2005 à 20:39:35    

Sujet également posté sur ppc
Bonjour à tous, vous avez peut être le même problème que moi concernant le systray sous xp (pro).
Quand l'explorer plante, et qu'il redémarre dans la foulée, ou que je le tue parfois moi même pour, par exemple, effacer un dossier ou un fichier récalcitrant, il y a toute une partie des icones du systray qui ont disparues.  :cry:  
j'ai pris l'habitude d'ouvrir process Explorer( qui a depuis longtemps remplacé le gestionnaire des taches chez moi) et de tuer/redémarrer chaque application qui posait problème.
 :sweat:  
ça fait longtemps que je cherchait un moyen d'automatiser ou de "semi-automatiser" cette tache, voici mon batch :
 

Code :
  1. taskkill /f /im SuperCopier.exe
  2. @ cd C:\Program Files\SuperCopier
  3. @ SuperCopier.exe
  4. taskkill /f /im PrintScreen.exe
  5. @ cd C:\Program Files\Gadwin Systems\PrintScreen
  6. @ PrintScreen.exe
  7. taskkill /f /im ClipTray.exe
  8. @ cd C:\Program Files\ClipTray
  9. @ ClipTray.exe
  10. taskkill /f /im KlipFolio.exe
  11. @ cd C:\Program Files\KlipFolio
  12. @ KlipFolio.exe
  13. taskkill /f /im ATnotes.exe
  14. @ cd C:\Program Files\ATnotes
  15. @ ATnotes.exe
  16. taskkill /f /im mixer
  17. @ cd C:\WINDOWS
  18. @ mixer.exe
  19. pause
  20. exit


vous avez en prime les applications qui posent problèmes dans mon systray.
 
Le problème désormais c'est que seule la premiere étape est exécutée, je pense que c'est une histoire de "focus", puisque la fenêtre cmd passe au second plan, et "gèle".
 
auriez vous une solution ?
quelle qu'elle soit ?
sachant que en batch ou vbs ou quoique ce soit d'autres, je suis une quiche.
à noter : la commande tskill me paraissait plus rapide, mais elle ne marche pas vraiment ?
à noter bis : j'ai télécharger pskill.exe, qui est vraiment rapide, mais j'avais le même problème, ne l'ayant pas identifé tout de suite, je suis passé a taskkill/tskill, mais je pourrais le réutiliser si vous m'apporter une aide sur ce problème de "focus".
 
merci de m'avoir lu.
Grégory.
 
ps: pas la peine de me faire remarquer que mon systray est encombré, je le sais, mais c'est une drogue !! :)


Message édité par gregC le 06-03-2005 à 20:43:47
Reply

Marsh Posté le 06-03-2005 à 20:39:35   

Reply

Marsh Posté le 06-03-2005 à 20:53:31    

j'améliore déjà un peu le code...
enfin je crois !

Code :
  1. taskkill /f /im SuperCopier.exe
  2. C:\progra~1\SuperCopier\SuperCopier.exe
  3. taskkill /f /im PrintScreen.exe
  4. C:\progra~1\Gadwin Systems\PrintScreen\PrintScreen.exe
  5. taskkill /f /im ClipTray.exe
  6. C:\progra~1\ClipTray\ClipTray.exe
  7. taskkill /f /im KlipFolio.exe
  8. C:\progra~1\KlipFolio\KlipFolio.exe
  9. taskkill /f /im ATnotes.exe
  10. C:\progra~1\ATnotes\ATnotes.exe
  11. taskkill /f /im mixer.exe
  12. C:\WINDOWS\mixer.exe
  13. rem pour voir ce qu'il c'est un peu passé :
  14. pause
  15. exit


Message édité par gregC le 06-03-2005 à 20:54:16
Reply

Marsh Posté le 06-03-2005 à 23:10:02    

Salut,
 
Ton batch va s'arrêter à la quatrième ligne puisque le chemin avec espace n'est pas quoté.
 
Tu peux essayer :
"C:\Program Files\Gadwin Systems\PrintScreen\PrintScreen.exe"

Reply

Marsh Posté le 07-03-2005 à 00:07:24    

merci j'en ai profité pour tout quoter, hisotre de cohérnece.
mais ça n'a pas résolu mon problème, qui xistait de toute facon même avec la version du haut :  cd c:....etc.

Reply

Marsh Posté le 08-03-2005 à 01:44:06    

Et si tu ajoutais un start au début de chaque exe à lancer ?
 

Code :
  1. taskkill /f /im SuperCopier.exe
  2. start "C:\program files\SuperCopier\SuperCopier.exe"

Reply

Marsh Posté le 08-03-2005 à 08:24:17    

Merci pour la suggestion.
Maintenant le programe suis son cours jusqu'au bout,
Mais à la place de lancer les programmes en question, le fait de rajouter [b]start[/] ouvre des invites de commandes ...
 
:/

Reply

Marsh Posté le 08-03-2005 à 14:36:17    

C'est étrange : je viens d'essayer. Ca ouvre effectivement une invite de commande mais celle-ci se ferme aussi tôt que le dernier exécutable est lancé.

Reply

Marsh Posté le 08-03-2005 à 16:30:48    

avant le coup du start, j'ai vraiment eu l'impression que mon problème était lié au "focus" , comme si le batch stoppait dès qu'il y avait un autre programme passant en avant plan... ça a un quelconque sens pour toi ?

Reply

Marsh Posté le 08-03-2005 à 17:00:52    

Oui, justement en prenant compte de ça que j'ai proposé le start. Notre objectif est de regagner la main après que chaque programme est lancé.
 
J'ai testé avec 3 logiciels, dont un tu ne peux pas connaître (c'est spécifique de chez mon pays), mais les deux autres étaient SuperCopier et Volkey. Je n'avais qu'une seule fenêtre DOS qui s'est fermée à la fin.
 
Dans ton cas, le nombre de fenêtre est exactement celui de programmes à exécuter ?

Reply

Marsh Posté le 09-03-2005 à 10:33:03    

désolé du retard et encore merci de s'interesser a ce problème.
voilà une capture d'écran après execution du batch, et le code du dit batch.
tout les programmes se sont bien arrétés, aucun n'a été redémarré.
http://img210.exs.cx/img210/5681/batchcmd6yk.th.png
 

Code :
  1. taskkill /f /im SuperCopier.exe
  2. start "C:\progra~1\SuperCopier\SuperCopier.exe"
  3. taskkill /f /im PrintScreen.exe
  4. start "C:\progra~1\Gadwin Systems\PrintScreen\PrintScreen.exe"
  5. taskkill /f /im ClipTray.exe
  6. start "C:\progra~1\ClipTray\ClipTray.exe"
  7. taskkill /f /im KlipFolio.exe
  8. start "C:\progra~1\KlipFolio\KlipFolio.exe"
  9. taskkill /f /im ATnotes.exe
  10. start "C:\progra~1\ATnotes\ATnotes.exe"
  11. taskkill /f /im mixer.exe
  12. start "C:\WINDOWS\mixer.exe"
  13. @ rem pour voir ce qu'il ce passe :
  14. pause
  15. exit


edit : nouvelles captures plus simple et précise


Message édité par gregC le 09-03-2005 à 10:52:29
Reply

Marsh Posté le 09-03-2005 à 10:33:03   

Reply

Marsh Posté le 09-03-2005 à 13:23:05    

essaye avec  

start /nowait "blah.exe"


 
:??:


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-03-2005 à 13:32:24    

pas mieux :/

Code :
  1. C:\>taskkill /f /im SuperCopier.exe
  2. Opération réussie : le processus "SuperCopier.exe" de PID 11696 a été arrêté.
  3. C:\>start /nowait "C:\progra~1\SuperCopier\SuperCopier.exe"
  4. Option non valide - "/nowait".
  5. C:\>taskkill /f /im PrintScreen.exe
  6. Opération réussie : le processus "PrintScreen.exe" de PID 14036 a été arrêté.
  7. C:\>start /nowait "C:\progra~1\Gadwin Systems\PrintScreen\PrintScreen.exe"
  8. Option non valide - "/nowait".
  9. C:\>taskkill /f /im ClipTray.exe
  10. Opération réussie : le processus "ClipTray.exe" de PID 8720 a été arrêté.
  11. C:\>start /nowait "C:\progra~1\ClipTray\ClipTray.exe"
  12. Option non valide - "/nowait".
  13. C:\>taskkill /f /im KlipFolio.exe
  14. Opération réussie : le processus "KlipFolio.exe" de PID 3520 a été arrêté.
  15. C:\>start /nowait "C:\progra~1\KlipFolio\KlipFolio.exe"
  16. Option non valide - "/nowait".
  17. C:\>taskkill /f /im ATnotes.exe
  18. Opération réussie : le processus "ATnotes.exe" de PID 1308 a été arrêté.
  19. C:\>start /nowait "C:\progra~1\ATnotes\ATnotes.exe"
  20. Option non valide - "/nowait".
  21. C:\>taskkill /f /im mixer.exe
  22. Opération réussie : le processus "mixer.exe" de PID 12064 a été arrêté.
  23. C:\>start /nowait "C:\WINDOWS\mixer.exe"
  24. Option non valide - "/nowait".
  25. C:\>pause
  26. Appuyez sur une touche pour continuer...


 

Reply

Marsh Posté le 09-03-2005 à 13:34:59    

c'est quoi ces c:\> ?


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-03-2005 à 13:37:01    

c'est pas le code, c'est le résultat dans la fenetre cmd.
le code :

Code :
  1. taskkill /f /im SuperCopier.exe
  2. start /nowait "C:\progra~1\SuperCopier\SuperCopier.exe"
  3. taskkill /f /im PrintScreen.exe
  4. start /nowait "C:\progra~1\Gadwin Systems\PrintScreen\PrintScreen.exe"
  5. taskkill /f /im ClipTray.exe
  6. start /nowait "C:\progra~1\ClipTray\ClipTray.exe"
  7. taskkill /f /im KlipFolio.exe
  8. start /nowait "C:\progra~1\KlipFolio\KlipFolio.exe"
  9. taskkill /f /im ATnotes.exe
  10. start /nowait "C:\progra~1\ATnotes\ATnotes.exe"
  11. taskkill /f /im mixer.exe
  12. start /nowait "C:\WINDOWS\mixer.exe"
  13. @ rem pour voir ce qu'il ce passe :
  14. pause
  15. exit


edit : le batch killprocess.bat, est directement à la racine du DD C, ceci expliquant pê cela.


Message édité par gregC le 09-03-2005 à 13:38:06
Reply

Marsh Posté le 09-03-2005 à 14:25:39    

Une remarque : quand tu quotes le chemin, il sera interprété tel quel, alors si tu mets "C:\progra~1", l'exécutable ne sera pas trouvé.
Il faut opter soit pour le format 8.3 pour le chemin entier, soit quoter avec C:\Program Files.
Ce n'est pas forcément la cause du non fonctionnement, mais voilà..
Sinon, depuis l'invite de commande, si tu tapes :
start /?
effectivement, il n'y pas de switch /nowait (peut-être non documenté ?)

Reply

Marsh Posté le 09-03-2005 à 14:36:39    

je sais plus ou j'avais lu ca !!
tanpis...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 09-03-2005 à 14:58:26    

bon, après quelques test :

Code :
  1. taskkill /f /im ClipTray.exe
  2. "C:\progra~1\ClipTray\ClipTray.exe"
  3. exit


ce .bat elimine le porcessus, redémarre le programme (il a l'air de le trouver à sa place avec "progra~1" ), mais  une fois le focus perdu (c'est toujours comme ça que je le comprend) l'EXIT n'est pas exécuté...
mais...merci nglechau de m'avoir rappelé qu'il existait une aide sous dos :)
en effet les quotes ne servent qu'a nommer la fenetres de commandes ?
le chemin est indiqué par un /D
en bref, voilà  mon batch, fonctionnel :D :

Code :
  1. taskkill /f /im SuperCopier.exe
  2. start /D C:\progra~1\SuperCopier\ /MIN SuperCopier.exe
  3. taskkill /f /im PrintScreen.exe
  4. start /D C:\progra~1\Gadwin~1\PrintScreen\ /MIN PrintScreen.exe
  5. taskkill /f /im ClipTray.exe
  6. start /D C:\progra~1\ClipTray\ /MIN ClipTray.exe
  7. taskkill /f /im KlipFolio.exe
  8. start /D C:\progra~1\KlipFolio\ /MIN KlipFolio.exe
  9. taskkill /f /im ATnotes.exe
  10. start /D C:\progra~1\ATnotes\ /MIN ATnotes.exe
  11. taskkill /f /im mixer.exe
  12. start /D C:\WINDOWS\ /MIN mixer.exe
  13. exit


edit : le /MIN ne marche que pour un seul programme (mixer), mais il ne gênes pas les autres.
 
Encore merci de vous être  penchés sur mon soucis.
mais vous ? vous n'avez pas ce problème de systray bégayant ??


Message édité par gregC le 09-03-2005 à 15:00:08
Reply

Marsh Posté le 09-03-2005 à 15:09:29    

Non, les quotes ne servent pas qu'à nommer les fenêtres ;)
Quand tu as plusieurs chemin par exemple :
C:\Program Files\Machin numero 1
C:\Program Files\Machin numero 2
C:\Program Files\Machin numero 3
etc.
Tu n'as pas forcément envie de faire des
C:\Progra~1\Machin~1
C:\Progra~1\Machin~2
C:\Progra~1\Machin~3
etc.
et de changer encore si tu ajoutes/supprimes des chemins de nom similaire.
Alors, plus simple, tu mets le chemin tel quel (nom long) par un copier/coller depuis Explorer, puis tu quotes.
Sinon, pour te répondre, si, ça m'arrive que explorer se plante et donc la disparition des icônes. Mais c'est si rarement que ça ne me dérange pas plus que ça ;)
Enfin, c'est cool que ça marche. Pourtant le mystère reste entière : pourquoi dans mes tests je n'avais pas besoin du /D mais un simple start sans argument me suffisait :)

Reply

Marsh Posté le 09-03-2005 à 15:17:39    

tu es sous quel os ? xp pro familial, 2000 ? 98 ?
j'ai cru comprendre que certaine fonctions dos variaient d'un os à l'autre.
peut être que le start en fait partie.
voici  "mon" start /? :

Code :
  1. START ["titre"] [/D chemin] [/I] [/MIN] [/MAX] [SEPARATE]
  2.       [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
  3.       [/WAIT] [/B] [commande/programme]
  4.       [paramètres]
  5.   "titre"     Titre à afficher dans la barre de titre.
  6.   chemin      Répertoire de démarrage
  7.   B           Démarre l'application sans créer de nouvelle fenêtre.
  8.               L'application ignore les interruptions par ^C. A moins que
  9.               l'application ne le permette, ^Break est le seul moyen
  10.               d'interrompre l'application.
  11.   I           Le nouvel environnement sera l'environnement initial passé
  12.               à cmd.exe et non pas l'environnement en cours.
  13.   MIN         Démarre la fenêtre réduite en icône
  14.   MAX         Démarre la fenêtre en plein écran
  15.   SEPARATE    Démarre le programme Windows 16-bits en espace mémoire séparé
  16.   SHARED      Démarre le programme Windows 16-bits en espace mémoire partagé
  17.   LOW         Démarre l'application dans la classe de priorité IDLE
  18.   NORMAL      Démarre l'application dans la classe de priorité NORMAL
  19.   HIGH        Démarre l'application dans la classe de priorité HIGH
  20.   REALTIME    Démarre l'application dans la classe de priorité REALTIME
  21.   ABOVENORMAL Démarre l'application dans la classe de priorité ABOVENORMAL
  22.   BELOWNORMAL Démarre l'application dans la classe de priorité BELOWNORMAL
  23.   WAIT        Démarre l'application et attend qu'elle se termine
  24.   com/prog
  25.               S'il s'agit d'une commande cmd interne ou d'un fichier de
  26.               commandes, alors le processeur de commande est exécuté avec
  27.               l'option /K par cmd.exe. Cela signifie que la fenêtre ne
  28.               sera pas supprimée après l'exécution de la commande.
  29.               S'il ne s'agit pas d'une commande cmd interne ou d'un fichier de
  30.               commandes alors il s'agit d'un programme et il sera exécuté
  31.               comme une application liée à une fenêtre ou comme une
  32.               application console.
  33.   paramètres  Paramètres passés à la commande ou au programme
  34. Si les extensions de commandes sont activées, l'invocation des extensions
  35. de commandes dans la ligne de commandes ou la commande START sont modifiées
  36. comme suit :
  37. Les fichiers non exécutables peuvent être invoqués via leur association de
  38.     fichiers en tapant le nom du fichier en tant que commande (ex :  WORD.DOC
  39.     ouvrirait l'application associée à l'extension de fichier .DOC). Voir les
  40.     commandes ASSOC et FTYPE pour savoir comment créer ces associations depuis
  41.     un script de commandes.
  42. Lors de l'exécution d'une application GUI 32 bits,
  43.     CMD.EXE n'attend pas que l'application se termine avant de revenir à
  44.     l'invite de commandes. Ce nouveau comportement ne se produit PAS s'il
  45.     est exécuté depuis un script de commandes.
  46. Lors de l'exécution d'une ligne de commandes dont la première partie est la
  47.     chaîne "CMD " sans extension ni qualificateur de chemin d'accès, "CMD" est
  48.     remplacé par la valeur de la variable COMSPEC. Ceci permet de ne pas
  49.     utiliser le CMD.EXE du répertoire en cours.
  50. Lors de l'exécution d'une ligne de commandes dont la première partie ne
  51.     contient PAS d'extension, CMD.EXE utilise la valeur de la variable
  52.     d'environnement PATHEXT pour déterminer les extensions à rechercher et
  53.     leur ordre. La valeur par défaut de la variable PATHEXT est :
  54.         .COM;.EXE;.BAT;.CMD
  55.     Notez que la syntaxe est identique à celle de la variable PATH, avec des
  56.     point-virgule séparant les divers éléments.
  57. Lors de la recherche d'un exécutable, s'il n'y a pas de correspondance pour
  58. l'extension, une recherche est effectuée pour vérifier la correspondance entre
  59. nom de fichier et nom de répertoire. S'il y a correspondance, la commande
  60. START ouvre l'explorateur sur ce chemin d'accès. Si cela est fait à partir de
  61. la ligne de commandes, cela est équivalent à effectuer CD /D vers ce chemin
  62. d'accès.

Reply

Marsh Posté le 09-03-2005 à 15:38:28    

Je suis sous XP Pro SP1 (en).
 

Citation :

C:\>start /?
Starts a separate window to run a specified program or command.
 
START ["title"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/B] [command/program]
      [parameters]

Reply

Marsh Posté le 09-03-2005 à 15:42:24    

je suis sous xp pro sp1 mais fr ?
donc tout pareil en gros...
mystère...

Reply

Marsh Posté le 09-03-2005 à 15:50:22    

Comme tu dis ;)

Reply

Marsh Posté le 19-04-2005 à 09:47:47    

Voici un petit batch que j'utilise et qui fonctionne très bien.
 
Je pense que si tu rajoute tes lignes pour tuer les applications en debut de batch ca devrait marcher nickel
 

Code :
  1. @echo off
  2. D:
  3. cd "D:\Program Files\ConTEXT\"
  4. start ConTEXT.exe
  5. cd "D:\Program Files\Mozilla firefox\"
  6. start firefox.exe
  7. cd "D:\Program Files\powermenu\"
  8. start PowerMenu.exe -hideself on
  9. cd "D:\Program Files\process explorer\"
  10. start procexp.exe /t
  11. C:
  12. cd "C:\Program Files\KlipFolio\"
  13. start KlipFolio.exe
  14. cd "C:\Program Files\Stardock\ObjectDock\"
  15. start ObjectDock.exe

Reply

Marsh Posté le 21-04-2005 à 10:49:20    

merci je comparerais avec mon petit dernier, voir si on gagne en rapidité.

Reply

Marsh Posté le 29-10-2006 à 09:51:17    

gregC a écrit :

merci je comparerais avec mon petit dernier, voir si on gagne en rapidité.


 
voici comment utiliser correctement START dans ton cas :
2 méthodes :
 
sans guillements : START notepad.exe
ou avec, dans quel cas le titre des la fenetre est attendue par START : START "titre fenetre bidon voir vide" "c:\windows\system32\notepad.exe"
 
car si tu fais START "notepad.exe"
il t'ouvre une nouvelle fenetre de commande nomée "notepad.exe" mais comme il n'y a pas de commande apres le titre, il attend des nouvelles commandes ...
 
j'ai mis un moment a comprendre quand j'ai été face au probleme aussi :)

Message cité 1 fois
Message édité par elloco054 le 29-10-2006 à 09:51:42
Reply

Marsh Posté le 29-10-2006 à 11:33:45    

elloco054 a écrit :

voici comment utiliser correctement START dans ton cas :
2 méthodes :
 
sans guillements : START notepad.exe
ou avec, dans quel cas le titre des la fenetre est attendue par START : START "titre fenetre bidon voir vide" "c:\windows\system32\notepad.exe"


Ta première méthode ne marche qu'avec les exécutables se trouvant dans %PATH%.
 
La bonne réponse "universelle" est :
start /d"chemin_complet_du_dossier_hébergeant_lexécutable" exécutable.exe
 
A l'époque, je ne connaissais pas l'option /d :D

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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