Salut,
Je cherche tout simplement la ligne de commande pour tuer un process (l'équivalent de la fonction kill sous Linux).
Merci d'avance !
Salut,
Je cherche tout simplement la ligne de commande pour tuer un process (l'équivalent de la fonction kill sous Linux).
Merci d'avance !
Salut,
utilise PSKill
Merci !
En fait, j'avais fait précédemment un batch dans lequel je terminais un process sans passer par un exécutable. Il me semble que sous XP, il y a une commande qui existe pour cela. La connais-tu ?
D'autre part, sais-tu s'il est possible de faire des tests sur des process (comme on le ferais avec des noms de fichiers) ?
non, pas dans le distrib de base, étant donnée que MS en propose un dans le kit de ressources proposé en download.Envoyé par tonf
Avec une boucle For /F cela me semble possibleEnvoyé par tonf
Avec la boucle, je ne vois pas trop comment faire. Le but étant de traduire l'instruction suivante : si le process existe alors le tuer.
A ce que j'ai compris dans l'aide de la console sur la commande For, on peut remplacer le nom de fichier entre guillemets par des quotes inversées.
La ligne de commande serait donc la suivante :Ceci n'a pour résultat que de me lancer une deuxième tâche mon_programme.exe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for /F %%i in (`mon_programme.exe`) do pskill %%i
Une idée ?
Une petite alorsEnvoyé par tonf
Tu peux faire plus simple mais ici on supprime toutes les instances des process de même nom.
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 rem Supprime un ou + process. rem Outils dispo sur :http://www.sysinternals.com/ntw2k/freeware/pstools.shtml Start /min Notepad Start /min Notepad Set process=Notepad rem Récupére les lignes, excepté les 8 premières, contenant le nom du process contenu dans la varaible d'environnement. rem Le token 2 contient le PID Rem Si le PID n'est pas renseigné aucun process de ce nom n'a été trouvé, rem dans ce cas on ne fait rien sinon on détruit le process. for /F "Tokens=1,2 skip=8" %%O in ('Pslist -e %Process%') do if not %%P'==' Call ::KILL %%P Goto End :KILL rem Supprime un process PSKill -t %1 goto :eof :End
Merci, ça marche nickel !
Mais je ne comprends pas bien l'histoire du "skip=8". PSList ne retourne qu'une ligne. D'ailleurs le même batch sans cette instruction fonctionne aussi.
Peux-tu m'expliquer ?
Merci d'avance pour l'explication !
Pslist [Entrée] renvoi ceci :Envoyé par tonf
Je considére les 8 première lignes comme des lignes 'parasite' et surtout sans structure.1
2 PsList 1.26 - Process Information Lister
3 Copyright (C) 1999-2004 Mark Russinovich
4 Sysinternals - www.sysinternals.com
5
6 Process information for AMD2800:
7
8 Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
notepad ....
Aprés la 8 ième ligne, les lignes sont structurées; On peut donc les parser avec la boucle For /F.
Le premier token contient le nom, le second le PID et ils sont délimités par des espaces ( paramètre delims par défaut).
Donc sans le skip=8 tu obtiens des message d'erreur avec psKill car le parsing se fait sur des lignes qui ne portent pas d'information exploitable (PID).
Tout est clair, merci !
Je ne pensais pas que les lignes d'en-tête de PSList étaient prises en compte, d'où mon incompréhension...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager