Batch - Restart automatiq d'1 program bugué

Résolu
Bonjour,

Je situe le contexte.

J'ai un Windows serveur 2003 dans une association qui diffuse des flux audio via winamp (couplé de son plugin DSP) sur un serveur de diffusion (shoucast).

Cette association possède un connexion ADSL de 512 donc déconnexion toutes les 24h.

Le problème c'est qu'à chaque déconnexion winamp 'plante' et freez, il faut donc que je termine le processus manuellement pour le redémarrer par la suite.

J'aimerais automatiser cette tâche par l'intermédiaire d'un script Batch que je placerais en tâche planifié.

Voici ce que j'ai déjà commencé mais visiblement ne fonctionne pas.

@echo off
set process=winamp
pslist %process%
if %ERRORLEVEL% == 1 start /B %process%




--
Allé bon courage et @+
www.google.fr c'est ta copine !

15 réponses

  1. Merci dubcek, je prends note et je testerai.

    merci merci pour ton aide :-)

    PS: En ce moment je teste une autre solution que winamp. (SimpleCast)
    0
    1. Contributeur
      je ferais quelque chose comme ça, je ne peux pas tester, je n'ai pas tasklist ni taskkill
      @echo off
      echo Verification etat WEBRADIO
      
      tasklist /fi "Imagename eq winamp.exe" /fi "Status eq RUNNING | findstr "winamp"
      if %errorlevel% EQU 0 (
              echo IMPEC tout fonctionne...
      )
      else
      (
              taskkill /im winamp.exe /f /fi "status eq not responding"
              echo Il y a un probleme
              echo Restart de Winamp
              start /B winamp.exe
      )
      rem on vérifie
      tasklist /fi "Imagename eq winamp.exe" 
      
      0
      1. OK, donc voila mn new code que je vais tester.
        Il me reste juste à déterminer mon test déclencheur.
        Une petite aide ?

        @echo off 
        echo Verification etat WEBRADIO 
        
        if errorlevel 1 goto prob 
        if errorlevel 0 goto noprob 
        
        :noprob 
        echo iMPEC tout fonctionne... 
        goto fin 
        
        :prob 
        echo Il y a un probleme 
        echo Restart de Winamp 
        taskkill /im winamp.exe /f /fi "status eq not responding" 
        start /B winamp.exe 
        goto fin 
        
        :fin 
        exit

        Allé bon courage et @+
        www.google.fr c'est ta copine !
        0
        1. Contributeur
          ton test est là
          /fi "status eq not responding" 

          si winamp est running,taskkil ne va rien faire
          0
        2. Oui, Mais il faut que je le relance.

          je place où mon
          start /B winamp


          ??
          0
      2. Alors toujours dans la famille de Task je demande le Kill :-)

        J'ai trouvé sur ma copine google :
        taskkill /f /fi "status eq not responding"


        Ce petit code à pour but de kill tous les progs plantés ou figés.

        Maintenant comment l'insérer dans un bon petit code ?
        0
        1. Je truc, au lieu que ce soit général comme c'est le cas pour ce code, il faudrait qu'il fonctionne que pour winamp.

          Et les autres progs pour le mom, ça nous importe peu (hum, en bon français).
          0
        2. Contributeur
          essayer d'ajouter :
          /fi "IMAGENAME eq winamp"
          ou 
          /im winamp
          0
      3. Hum, alors j'ai testé la commande "pslist wanamp" sur le WinServ 03 et en fait ça ne fait rien. voici d'où vient le prob :-s mon code est faux.

        0
        1. Comment utilise t-on la commande tasklist ? je peux avoir un exemple stp ? j'ai fait le "/?" de tasklist, mais c'est pas très parlant pour moi.

          Merci de votre aide à tous en tout cas :-)
          0
      4. Contributeur
        vérifier les valeurs retournées par pslist:
        pslist winamp
        echo %errorlevel%

        quand winamp tourne
        quand winamp est planté, ne répond pas
        quand winamp ne tourne pas
        0
        1. Oulaaa ça se corce, eeeeee des propositions de code ?
          0
          1. Attention, ERRORLEVEL ne prend pas forcément pour valeur 0 ou 1. Sa dépend des commandes que tu envois.
            0
            1. Contributeur
              non, ça le tue systématiquement. parce que je ne sais pas ce que rapporte pslist si il est freeze ou pas
              sinon essayer tasklist, qui permet de tester le status RUNNING|NOT RESPONDING
              0
              1. Donc ainsi, ça devrait kill winamp uniquement s'il est planté ou freez ?
                0
                1. Contributeur
                  si pslist retourne errorlevel GEQ 1 c'est que winamp ne tourne plus, le taskkill est inutile.
                  attention au == GEQ, le == est de trop
                  pslist peut (peut-être) voir winamp même si il est planté (cf post 3),je ferais
                  @echo off
                  set process=winamp
                  TASKKILL /IM %process%.exe
                  start /B %process%
                  
                  0
                  1. La dernière modif ne fonctionne pas à savoir :

                    @echo off
                    set process=winamp
                    pslist %process%
                    if %ERRORLEVEL% == GEQ 1 start /B %process%


                    Oui, c'est ce que je souhaite faire, kill le processus pour le relancer.
                    Comment dois-je faire ?

                    @echo off
                    set process=winamp
                    pslist %process%
                    if %ERRORLEVEL% == GEQ 1 TASKKILL /IM winamp.exe
                       And start /B %process%
                    endif
                    


                    J'ai un doute la pour :
                     And start /B %process%

                    je pense un peu trop algo la lool
                    0
                    1. Contributeur
                      peut-être que quand Winamp plante, il reste en mémoire et pslist le voit toujours présent. il faudrait afficher des details avec pslist -d ou peut-être le tuer d'abord avec taskkill puis le relancer.
                      0
                      1. Ok merci, je vais essayer et je te tiens au courant.

                        Allé bon courage et @+
                        www.google.fr c'est ta copine !
                        0
                        1. Contributeur
                          hello
                          essayer un test numérique
                          if %ERRORLEVEL% GEQ 1 start /B %process%
                          0