Utilitaires
Scripts
Divers
Jeux
Rechercher
Quillevere.net
Réflexions informatiques

Attendre la fin d'un process depuis un Batch

15/04/2021

Dans un traitement Batch qui appelle un exécutable, vous pouvez avoir besoin d'éviter que cet exécutable ne soit lancé plusieurs fois, en cas de relance du batch.

Il est alors intéressant de faire attendre le traitement ou de rejeter l'appel.

La fonction ci-dessous, à inclure dans le Batch appelant, permet de vérifier qu'un process n'est pas en cours d'exécution et, si c'est le cas, d'attendre X secondes avant de relancer la vérification.

REM Vérifie si un process est déjà en cours.
:verifie_process_dispo
    set executable=%1
    set duree_attente_en_secondes=%2
    set arguments=%3
   
    if [%arguments%]==[] (
        set arguments=%executable%
        )
   
    WMIC process where "name like '%executable%'" get commandLine | find /i "%arguments%"
    IF "%ERRORLEVEL%"=="0" (
        echo %executable% est deja en cours d execution...
        timeout %duree_attente_en_secondes%
        goto :verifie_process_dispo
    ) else (
       
        EXIT /B
    )

Elle prend en entrée 3 paramètres :

  • Le fichier du process à rechercher
  • La durée d'attente entre 2 vérifications
  • Optionnellement les arguments à rechercher

Cas d'utilisation

Cet exemple vérifie que la calculatrice Windows n'est pas affichée, et ce toutes les 20 secondes, comme dans la capture ci-dessous :

call :verifie_process_dispo calculator.exe 20

Cet autre exemple vérifie que le programme Java "programme.jar" n'est pas en cours d'exécution et ce toutes les 5 secondes :

call :verifie_process_dispo java.exe 5 programme.jar
Dernière modification le 15/04/2021 - Quillevere.net

Rechercher sur le site

fr en rss RSS info Informations