Le processus en cours est la console pas le fichier batch.
Pour faire simple: soit créer un fichier en début de batch et le supprimer en fin. PB le batch peut provoquer une erreur et dans ce cas le fichier n'est pas supprimé ce qui fausserait la prochaine exécution.
Autre approche rechercher la présence du nom du batch dans la ligne de commande de tous les process en cours.
Regarde les outils de Sysinternals sinon peut être avec WMI...
[edit]
wmic PROCESS WHERE (Description="cmd.exe") get Commandline
CommandLine
"C:\WINDOWS\system32\cmd.exe"
cmd /c ""C:\Temp\s.cmd" "
Le second est une console exécuté via Run.
Le second est un batch en pause exécuté via l'explorer.
Ensuite avec Find tu peux savoir si oui ou non le batch est en cours d'exécution :
1 2 3 4 5 6 7 8
|
@echo off
wmic PROCESS WHERE (Description="cmd.exe") get Commandline| Find /I "C:\Temp\s.cmd">nul
rem 1 non la chaine n'existe pas.
rem 0 oui la chaine existe.
IF ERRORLEVEL 1 Echo "Existe pas"&goto suite
IF ERRORLEVEL 0 Echo "Existe"
:suite |
Voir les documents cités sur cette page :
http://support.microsoft.com/kb/325427/fr
Partager