[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. 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
    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. 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

      @+