Batch - Restart automatiq d'1 program bugué

Résolu
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   -  
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   -
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%



15 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
hello
essayer un test numérique
if %ERRORLEVEL% GEQ 1 start /B %process%
0
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
Ok merci, je vais essayer et je te tiens au courant.

Allé bon courage et @+
www.google.fr c'est ta copine !
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
Donc ainsi, ça devrait kill winamp uniquement s'il est planté ou freez ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
vincentdu76
 
Attention, ERRORLEVEL ne prend pas forcément pour valeur 0 ou 1. Sa dépend des commandes que tu envois.
0
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
Oulaaa ça se corce, eeeeee des propositions de code ?
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
essayer d'ajouter :
/fi "IMAGENAME eq winamp"
ou 
/im winamp
0
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
ton test est là
/fi "status eq not responding" 

si winamp est running,taskkil ne va rien faire
0
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
Oui, Mais il faut que je le relance.

je place où mon
start /B winamp


??
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 635
 
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
loudgi Messages postés 505 Date d'inscription   Statut Membre Dernière intervention   40
 
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