[Batch] Le programme s'arrete sans le loop

Résolu
Bonjour,

Je fais une petite horloge numérique en batch pour passer le temps.
Mais le programme s'arrête sans prendre en compte le loop depuis que j'ai défini les if pour remettre les secondes, minutes et heures à 0.

Voici mon code :

@echo off
set mytime=%time%
set heure=%mytime:~0,2%
set minute=%mytime:~3,2%
set seconde=%mytime:~6,2%
:loop
set mytime=%heure%:%minute%:%seconde%
echo --------
echo %mytime%
echo --------
ping 127.0.0.1 -n 2 > dechet.txt
del dechet.txt
set /a seconde=%seconde%+1
if seconde==60 (set /a seconde=0
set /a minute=%minute%+1)
if minute==60 (set /a minute=0
set /a heure=%heure%+1
if heure==24 (set /a heure=0)
cls
goto loop


Je crois n'avoir pas très bien saisi la commande if en batch pour ce type d'utilisation ... En php ou en javascript je m'en sortirais.

Merci pour votre aide.

--
___/\_canarder_/\___
Le Renard qui règne sur le WEB : Firefox

3 réponses

  1. Salut Canarder

    Pas mal ton programme, mais tu peux ajouter la date ;)

    comme ceci

    @echo off
    set mytime=%time%
    set heure=%mytime:~0,2%
    set minute=%mytime:~3,2%
    set seconde=%mytime:~6,2%
    :loop
    set mytime=%heure%:%minute%:%seconde%
    echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
    echo %date% :%mytime%   
    echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
    ping 127.0.0.1 -n 2 >nul
    set /a seconde=%seconde%+1
    if %seconde%==60 set /a seconde=0 & set /a minute=%minute%+1
    if %minute%==60 set /a minute=0 & set /a heure=%heure%+1
    if %heure%==24 set /a heure=0
    cls
    goto loop


    En tout cas, c'est pas mal, pour un petit programme

    @+
    1. ça créé un fichier null :\ je sais pas pourquoi. j'avais fais ça avant.
      1. Contributeur
        Non, cela ne crée pas de fichier null, tu dois utiliser cette syntaxe : ping 127.0.0.1 -n 2 >nul

        Nul avec un seul L
      2. en plus la tâche ping.exe restait si ça créait un fichier ...
    2. Contributeur
      Voici la correction :

      @echo off
      set mytime=%time%
      set heure=%mytime:~0,2%
      set minute=%mytime:~3,2%
      set seconde=%mytime:~6,2%
      :loop
      set mytime=%heure%:%minute%:%seconde%
      echo --------
      echo %mytime%
      echo --------
      ping 127.0.0.1 -n 2 >nul
      set /a seconde=%seconde%+1
      if %seconde%==60 set /a seconde=0 & set /a minute=%minute%+1
      if %minute%==60 set /a minute=0 & set /a heure=%heure%+1
      if %heure%==24 set /a heure=0
      cls
      goto loop

      Pour un ping 127.0.0.1 -n 2 tu peux l'envoyer dans NULL au lieu d'un fichier puis supprimer le fichier : ping 127.0.0.1 -n 2 >nul