Comment puis-je vérifier si un processus est en cours d'exécution à partir d'un fichier batch/cmd? Et si le processus est en cours, comment puis-je arrêter le processus automatiquement?
Comme un script cmd, quelqu'un peut-il me donner des conseils ou m'aider à réaliser ce type de script?.
Exemple (pseudo code):
If calc.exe is running
Stop calc.exe
Je veux quelque chose comme ça:
@echo off
:x
PATH=C:\Windows\System32\calc.exe
If calc.exe is ON goto Process_Stop
:Process_Stop
net stop calc.exe
goto x
Tout d'abord, vous avez la mauvaise commande pour arrêter un processus comme calc.exe. NET STOP arrêtera un service, mais pas un processus de programme normal. Vous voulez TASKKILL à la place.
Deuxièmement - Si vous savez que vous voulez tuer le processus s’il existe, pourquoi pensez-vous que vous devez vérifier s’il est en cours d’exécution avant de le tuer? Vous pouvez simplement essayer de tuer le processus, peu importe. S'il n'existe pas, une erreur est générée et aucun dommage ne sera causé. S'il existe, il est tué avec un message de réussite.
taskkill /im calc.exe
Si vous ne voulez pas voir le message d'erreur, redirigez stderr vers nul en utilisant 2>nul
. Si vous ne voulez pas voir le message de réussite non plus, redirigez stdout vers nul en utilisant >nul
.
taskkill /im calc.exe >nul 2>nul
Si vous souhaitez agir en fonction du résultat, vous pouvez utiliser les opérateurs conditionnels &&
et ||
pour la réussite et l'échec.
taskkill /im calc.exe >nul 2>nul && (
echo calc.exe was killed
) || (
echo no process was killed
)
Ou vous pouvez utiliser ERRORLEVEL pour déterminer quoi faire en fonction du résultat.
Une commande plus lisible et plus simple ressemble à ceci:
taskkill/F/FI "IMAGENAME eq calc.exe"
Cette méthodologie ne renvoie jamais de code d'erreur si le processus n'est pas en cours d'exécution. Le commutateur/IMRETOURNERAsi le processus n'est pas en cours d'exécution. Vous pouvez également utiliser des jokers tels que:
taskkill/F/FI "IMAGENAME eq calc * .exe" pour supprimer tout processus commençant par 'calc' et se terminant par '.exe' dans le nom.
Commande Checklist tasklist - Cette commande vous donne une liste des tâches et des services en cours d'exécution. Vérifiez si la tâche qui vous intéresse est en cours d'exécution à l'aide d'une expression régulière
Ensuite, utilisez la commande taskkill pour tuer le service ou la tâche.