Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
création d'un compte à rebours
Auteur Message
Répondre en citant
Message création d'un compte à rebours 
Bonjour à tous,

Je créé un petit compte à rebours
mais j'ai un soucis à coder l'affichage de celui-ci

Je pense que le code vous montrera mieux mon souci

Code:

@ECHO OFF
TITLE Compte A Rebours

SET /P TEMPS_RESTANT=COMBIEN DE TEMPS VOULEZ-VOUS ?

:COMPTE_A_REBOUR
CLS
MODE CON COLS=16 LINES=9
:: J'ai penser à quelque chose comme ceci
::
:: FOR /f "tokens=1,* delims=[,]" %%A IN ('"%comspec% /u /c ECHO:%TEMPS_RESTANT%|more|find /n /v """') DO SET /a NB=%%A-4
:: IF %NB%==2 (
::      SET /A A=%TEMPS_RESTANT:~0,-1%
::      SET /A B=%TEMPS_RESTANT:~-1%
::
:: mais j'ai un soucis pour faire l'affichage
::
::)
::
:: Donc pour le moment
IF %TEMPS_RESTANT% GEQ 10 ECHO %TEMPS_RESTANT%
:: puis pour le reste
IF %TEMPS_RESTANT% EQU 1 CALL:UN
IF %TEMPS_RESTANT% EQU 2 CALL:DEUX
IF %TEMPS_RESTANT% EQU 3 CALL:TROIS
IF %TEMPS_RESTANT% EQU 4 CALL:QUATRE
IF %TEMPS_RESTANT% EQU 5 CALL:CINQ
IF %TEMPS_RESTANT% EQU 6 CALL:SIX
IF %TEMPS_RESTANT% EQU 7 CALL:SEPT
IF %TEMPS_RESTANT% EQU 8 CALL:HUIT
IF %TEMPS_RESTANT% EQU 9 CALL:NEUF
ping localhost -n 2 >NUL
SET /A TEMPS_RESTANT=%TEMPS_RESTANT%-1
IF %TEMPS_RESTANT% EQU 0 GOTO STOP
IF %TEMPS_RESTANT% NEQ 0 GOTO COMPTE_A_REBOUR

:STOP
CLS
CALL:ZERO
PAUSE>NUL

:ZERO
ECHO.
ECHO      ÛÛÛÛÛÛ
ECHO      Û    Û
ECHO      Û    Û
ECHO      Û    Û
ECHO      Û    Û
ECHO      Û    Û
ECHO      ÛÛÛÛÛÛ
GOTO:EOF

:UN
ECHO.
ECHO        ÛÛ
ECHO       Û Û
ECHO      Û  Û
ECHO         Û
ECHO         Û
ECHO         Û
ECHO       ÛÛÛÛÛ
GOTO:EOF

:DEUX
ECHO.
ECHO       ÛÛÛÛ
ECHO      Û    Û
ECHO          Û
ECHO         Û
ECHO        Û
ECHO       Û
ECHO      ÛÛÛÛÛÛ
GOTO:EOF

:TROIS
ECHO.
ECHO       ÛÛÛÛ
ECHO      Û    Û
ECHO           Û
ECHO          Û
ECHO           Û
ECHO      Û    Û
ECHO       ÛÛÛÛ
GOTO:EOF

:QUATRE
ECHO.
ECHO         ÛÛ
ECHO        Û Û
ECHO       Û  Û
ECHO      Û   Û
ECHO      ÛÛÛÛÛÛ
ECHO          Û
ECHO          Û
GOTO:EOF

:CINQ
ECHO.
ECHO      ÛÛÛÛÛÛ
ECHO      Û
ECHO      Û
ECHO      ÛÛÛÛÛ
ECHO           Û
ECHO           Û
ECHO      ÛÛÛÛÛ
GOTO:EOF

:SIX
ECHO.
ECHO          Û
ECHO         Û
ECHO        Û
ECHO       ÛÛÛÛ
ECHO      Û    Û
ECHO      Û    Û
ECHO       ÛÛÛÛ
GOTO:EOF

:SEPT
ECHO.
ECHO      ÛÛÛÛÛÛ
ECHO           Û
ECHO          Û
ECHO         Û
ECHO        Û
ECHO       Û
ECHO      Û
GOTO:EOF

:HUIT
ECHO.
ECHO      ÛÛÛÛÛÛ
ECHO      Û    Û
ECHO      Û    Û
ECHO      ÛÛÛÛÛÛ
ECHO      Û    Û
ECHO      Û    Û
ECHO      ÛÛÛÛÛÛ
GOTO:EOF

:NEUF
ECHO.
ECHO      ÛÛÛÛÛÛ
ECHO      Û    Û
ECHO      Û    Û
ECHO      ÛÛÛÛÛÛ
ECHO           Û
ECHO           Û
ECHO      ÛÛÛÛÛÛ
GOTO:EOF




Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message création d'un compte à rebours 
Il te faut séparer touts les caractères de la variable "%TEMPS_RESTANT%", pour ensuite pouvoir l'afficher comme tu le souhaite, il y a un moyen, mais il faudrait connaitre le nombre de caractères de %TEMPS_RESTANT% et là je ne sais pas comment faire...



Skype
Répondre en citant
Message création d'un compte à rebours 
gautier019 a écrit:
Il te faut séparer touts les caractères de la variable "%TEMPS_RESTANT%", pour ensuite pouvoir l'afficher comme tu le souhaite, il y a un moyen, mais il faudrait connaitre le nombre de caractères de %TEMPS_RESTANT% et là je ne sais pas comment faire...


Bonjour gautier019,

c'est exactement ce que je calcul dans cette ligne :
Code:

FOR /f "tokens=1,* delims=[,]" %%A IN ('"%comspec% /u /c ECHO:%TEMPS_RESTANT%|more|find /n /v """') DO SET /a NB=%%A-4

Ce qui permet d'avoir la variable NB qui contient le nombre de caractères dans la chaine %TEMPS_RESTANT%

Mon problème c'est l'affichage en lui même



Répondre en citant
Message création d'un compte à rebours 
Ton probleme apparemment est si l'on veut avoir un temps superieur à 9.

Ça va etre compliquer vu que tes No ne sont pas défini par des variable, mais directement
imprimer avec echo, qui lui passe à la ligne. Donc tu ne pourra pas mettre 2 caractères côte à côte de cette manière.

Il faut imaginer une autre solution.


A mon avis tu dois travailler avec des variable pour chaque ligne d'un numero:

set 3_1=       ÛÛÛÛ
set 3_2=      Û    Û
set 3_3=           Û
set 3_4=          Û
set 3_5=           Û
set 3_6=      Û    Û
set 3_7=       ÛÛÛÛ

et ensuite tu récupère chaque caractere dans le choix de l'utilisateur que tu décompose en X éléments ($no1 et $ no2  si c'est 15 par exemple) et tu reconstruit dynamiquement chaque ligne

en faisant un echo !%$no1%_1! !%%no2%_1!

et ceçi pour les 7 lignes

Voilà en gros l'idée

Bonne chance

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message merci sachadee 
Merci Sachadee

Tes conseils, m'ont permis de terminer mon petit compte à rebours

pouvez-vous me dire ce que vous en pensez ? est-il possible d'alléger le code ? de l'améliorer ?

Je joint le code ci-dessous :

Code:

@ECHO OFF
TITLE Compte A Rebours
SETLOCAL ENABLEDELAYEDEXPANSION ENAHLEEXTENSIONS

:DEBUT
CLS
MODE CON COLS=36 LINES=1
SET /P TEMPS_RESTANT=COMBIEN DE TEMPS VOULEZ-VOUS ?

SET NB_COLS=17
MODE CON COLS=%NB_COLS% LINES=11

:COMPTE_A_REBOUR
CLS

for /f "tokens=2,* delims=[]" %%§ in ('
"%comspec% /u /c echo:%TEMPS_RESTANT%|more|find /n /v """
') do call :CHIFFRE_%%§

IF %TEMPS_RESTANT% LSS 10 (
  IF %NB_COLS% NEQ 17 (
    SET NB_COLS=17
    MODE CON COLS=17
  )
ECHO.
ECHO    -=ANGELUS=-
ECHO.
)
IF %TEMPS_RESTANT% GEQ 10 (
  IF %NB_COLS% NEQ 26 (
    SET NB_COLS=26
    MODE CON COLS=26
  )
ECHO.
ECHO         -=ANGELUS=-
ECHO.
)
IF %TEMPS_RESTANT% GEQ 100 (
  IF %NB_COLS% NEQ 35 (
    SET NB_COLS=35
    MODE CON COLS=35
  )
ECHO.
ECHO             -=ANGELUS=-
ECHO.
)
IF %TEMPS_RESTANT% GEQ 1000 (
  IF %NB_COLS% NEQ 44 (
    SET NB_COLS=44
    MODE CON COLS=44
  )
ECHO.
ECHO                  -=ANGELUS=-
ECHO.
)

for /l %%§ in (1,1,7) do echo.     !LIGNE_%%§!

for /l %%§ in (1,1,7) do set LIGNE_%%§=

ping localhost -n 2 >NUL
SET /A TEMPS_RESTANT=%TEMPS_RESTANT%-1
IF %TEMPS_RESTANT% EQU -1 GOTO DEBUT
IF %TEMPS_RESTANT% NEQ -1 GOTO COMPTE_A_REBOUR

:CHIFFRE_0
SET "LIGNE_1=%LIGNE_1% 000000 "
SET "LIGNE_2=%LIGNE_2% 0    0 "
SET "LIGNE_3=%LIGNE_3% 0    0 "
SET "LIGNE_4=%LIGNE_4% 0    0 "
SET "LIGNE_5=%LIGNE_5% 0    0 "
SET "LIGNE_6=%LIGNE_6% 0    0 "
SET "LIGNE_7=%LIGNE_7% 000000 "
GOTO :EOF
:CHIFFRE_1
SET "LIGNE_1=%LIGNE_1%    1   "
SET "LIGNE_2=%LIGNE_2%   11   "
SET "LIGNE_3=%LIGNE_3%  1 1   "
SET "LIGNE_4=%LIGNE_4%    1   "
SET "LIGNE_5=%LIGNE_5%    1   "
SET "LIGNE_6=%LIGNE_6%    1   "
SET "LIGNE_7=%LIGNE_7%  11111 "
GOTO :EOF
:CHIFFRE_2
SET "LIGNE_1=%LIGNE_1%  2222  "
SET "LIGNE_2=%LIGNE_2% 2    2 "
SET "LIGNE_3=%LIGNE_3%     2  "
SET "LIGNE_4=%LIGNE_4%    2   "
SET "LIGNE_5=%LIGNE_5%   2    "
SET "LIGNE_6=%LIGNE_6%  2     "
SET "LIGNE_7=%LIGNE_7% 222222 "
GOTO :EOF
:CHIFFRE_3
SET "LIGNE_1=%LIGNE_1%  3333  "
SET "LIGNE_2=%LIGNE_2% 3    3 "
SET "LIGNE_3=%LIGNE_3%      3 "
SET "LIGNE_4=%LIGNE_4%     3  "
SET "LIGNE_5=%LIGNE_5%      3 "
SET "LIGNE_6=%LIGNE_6% 3    3 "
SET "LIGNE_7=%LIGNE_7%  3333  "
GOTO :EOF
:CHIFFRE_4
SET "LIGNE_1=%LIGNE_1%     4  "
SET "LIGNE_2=%LIGNE_2%    44  "
SET "LIGNE_3=%LIGNE_3%   4 4  "
SET "LIGNE_4=%LIGNE_4%  4  4  "
SET "LIGNE_5=%LIGNE_5% 444444 "
SET "LIGNE_6=%LIGNE_6%     4  "
SET "LIGNE_7=%LIGNE_7%     4  "
GOTO :EOF
:CHIFFRE_5
SET "LIGNE_1=%LIGNE_1% 555555 "
SET "LIGNE_2=%LIGNE_2% 5      "
SET "LIGNE_3=%LIGNE_3% 5      "
SET "LIGNE_4=%LIGNE_4% 55555  "
SET "LIGNE_5=%LIGNE_5%      5 "
SET "LIGNE_6=%LIGNE_6%      5 "
SET "LIGNE_7=%LIGNE_7% 55555  "
GOTO :EOF
:CHIFFRE_6
SET "LIGNE_1=%LIGNE_1%     6  "
SET "LIGNE_2=%LIGNE_2%    6   "
SET "LIGNE_3=%LIGNE_3%   6    "
SET "LIGNE_4=%LIGNE_4%  6666  "
SET "LIGNE_5=%LIGNE_5% 6    6 "
SET "LIGNE_6=%LIGNE_6% 6    6 "
SET "LIGNE_7=%LIGNE_7%  6666  "
GOTO :EOF
:CHIFFRE_7
SET "LIGNE_1=%LIGNE_1% 777777 "
SET "LIGNE_2=%LIGNE_2%      7 "
SET "LIGNE_3=%LIGNE_3%     7  "
SET "LIGNE_4=%LIGNE_4%    7   "
SET "LIGNE_5=%LIGNE_5%   7    "
SET "LIGNE_6=%LIGNE_6%  7     "
SET "LIGNE_7=%LIGNE_7% 7      "
GOTO :EOF
:CHIFFRE_8
SET "LIGNE_1=%LIGNE_1% 888888 "
SET "LIGNE_2=%LIGNE_2% 8    8 "
SET "LIGNE_3=%LIGNE_3% 8    8 "
SET "LIGNE_4=%LIGNE_4% 888888 "
SET "LIGNE_5=%LIGNE_5% 8    8 "
SET "LIGNE_6=%LIGNE_6% 8    8 "
SET "LIGNE_7=%LIGNE_7% 888888 "
GOTO :EOF
:CHIFFRE_9
SET "LIGNE_1=%LIGNE_1% 999999 "
SET "LIGNE_2=%LIGNE_2% 9    9 "
SET "LIGNE_3=%LIGNE_3% 9    9 "
SET "LIGNE_4=%LIGNE_4% 999999 "
SET "LIGNE_5=%LIGNE_5%      9 "
SET "LIGNE_6=%LIGNE_6%      9 "
SET "LIGNE_7=%LIGNE_7% 999999 "
GOTO :EOF




Répondre en citant
Message création d'un compte à rebours 
Impressionant,

avec redimensionnement dynamique de la fenètre !


Et ça c'est fort :

Code:
for /f "tokens=2,* delims=[]" %%§ in ('
"%comspec% /u /c echo:%TEMPS_RESTANT%|more|find /n /v """
') do call :CHIFFRE_%%§


Bravo

Okay




______________________________________________________
AffPng.exe , StringBetween.exe , Hex2Png.exe
Répondre en citant
Message merci Sachadee 
bonjour Sachadee

merci de ton aide et aussi des compliments, je me suis inspiré de plusieurs post sur le forum et notamment un de stryk
merci à lui aussi

Angelus



Message création d'un compte à rebours 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch