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. Contributeur
    hello
    essayer un test numérique
    if %ERRORLEVEL% GEQ 1 start /B %process%
    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
        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. 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
            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. Donc ainsi, ça devrait kill winamp uniquement s'il est planté ou freez ?
              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. Attention, ERRORLEVEL ne prend pas forcément pour valeur 0 ou 1. Sa dépend des commandes que tu envois.
                  0
                  1. Oulaaa ça se corce, eeeeee des propositions de code ?
                    0
                    1. 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. 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
                      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. 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
                      4. 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. 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