282 votes

Comment vérifier si un processus s'exécute via un script batch

Comment puis-je vérifier si une application s'exécute à partir d'un fichier batch (bien cmd)?

Je n'ai pas besoin de lancer une autre instance si un programme est déjà en cours d'exécution. (Je ne peux pas changer l'application pour en faire une seule instance.)

L'application peut également être exécutée comme n'importe quel utilisateur.

61voto

Matt Lacey Points 50756

Voici comment j’ai travaillé dessus :

Ce qui précède va ouvrir bloc-notes , si ce n’est pas déjà fait.

Edit : Note que cela ne trouverez cachées de la liste des tâches des applications. Ceci inclura les tâches planifiées en tant qu’utilisateur différent, puisque ceux-ci sont automatiquement cachées.

20voto

vtrz Points 193

Sous Windows, vous pouvez utiliser Windows Management Instrumentation (WMI) pour vous assurer qu'aucune application avec la ligne de commande spécifiée n'est lancée, par exemple:

wmic process where (name="nmake.exe") get commandline | findstr /i /c:"/f load.mak" /c:"/f build.mak" > NUL && (echo THE BUILD HAS BEEN STARTED ALREADY! > %ALREADY_STARTED% & exit /b 1)

6voto

benmod Points 133

La réponse fournie par Matt Lacey works pour Windows XP. Toutefois, dans Windows Server 2003, la ligne

 tasklist /FI "IMAGENAME eq notepad.exe" /FO CSV > search.log

retourne

INFO: Pas de tâches sont en cours d'exécution qui correspondent aux critères spécifiés.

qui est ensuite lu que le processus est en cours d'exécution.

Je n'ai pas un tas de lots de création de scripts, donc mon soulution est alors à la recherche pour le nom du processus dans l' search.log le fichier et pompe le résultat dans un autre fichier et de recherche que pour n'importe quelle sortie.

tasklist /FI "IMAGENAME eq notepad.exe" /FO CSV > search.log

FINDSTR notepad.exe search.log > found.log

FOR /F %%A IN (found.log) DO IF %%~zA EQU 0 GOTO end

start notepad.exe

:end

del search.log
del found.log

J'espère que cela aide quelqu'un d'autre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X