Faire une attente sous dos (batch) [Résolu/Fermé]

Signaler
-
Messages postés
1
Date d'inscription
vendredi 24 avril 2020
Statut
Membre
Dernière intervention
24 avril 2020
-
Bonjour,

je voudrais insérer une ligne de temporisation entre deux lignes dans un programme .bat mais je connais pas la syntaxe, quelqu'un pourrais m'aider. Je veux faire une pause de 30 seconde et reprendre aprés

Merci

24 réponses

Bonjour,

Alors Sleep, Wait, et Choice ne sont PAS inclus avec windows XP.
une solution est celle énoncée par Jeff :

ping -n 'nbr de seconde +1' 127.0.0.1 >nul
65
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

regarde du coté de la commande timeout

ex : timeout /t temp en seconde

ex : timeout /t 60

et pour ne pas afficher de message

ex : timeout /t 60>nul

si msdos te dit que la commande n'existe pas essaye

c:\Windows\System32\timeout /t 60>nul
05 pour 5 secondes
merci beaucoup car grace a toi j'ai reusi merci encore
Messages postés
1
Date d'inscription
vendredi 24 avril 2020
Statut
Membre
Dernière intervention
24 avril 2020

Merci andykimpe timeout me suffit pour ma part et fonctionne ok
Messages postés
145
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
15 avril 2016
90
Une autre solution pour crée une temporisation dans un batch est d'incrémenté une variable dans une boucle avec un seuil en condition de sortie

exemple:
:boucle  
set /a count = count + 1  
if %count%==30000 goto finboucle  
goto boucle  
:finboucle 


cela fonctionne aussi, si tu veut plus d'infos regarde Publicité supprimée Modération CCM

Flox
Le temps d'attente va varier en fonction de la vitesse du processeur.
Messages postés
18642
Date d'inscription
lundi 15 février 1999
Statut
Webmaster
Dernière intervention
19 juillet 2021
63 119
http://www.robvanderwoude.com/index.html (lien mort)
Nouveau lien : https://www.robvanderwoude.com/wait.php

Voir l'astuce en utilisant la commande ping, qui permet de fixer un délai en secondes... fallait y penser :-)

Webmaster(@)CommentCaMarche.net
>>010000110100001101001101<<

Salut,

le PING ne fonctionne pas sur tous les ordinateurs
la boucle n'est pas précise pour le temps et trop variable d'un ordinateur à l'autre
j'ai donc imaginé une attente qui tient compte de l'heure système :

@echo off
set temps_pause=5
echo test de pause : le temps de pause est ici de %temps_pause% secondes
echo.
call :attente %temps_pause%
echo %temps_pause% plus tard ce message s'affiche
echo.
echo le batch va maintenant se terminer dans 10 secondes
call :attente 10
exit


:attente
call :calcultemps
set /a t1= %j1% + %h1% + %m1% + %s1% + %1
:boucleattente
call :calcultemps
set /a t2= %j1% + %h1% + %m1% + %s1%
if "%t2%" LSS "%t1%" goto boucleattente
goto :eof
:calcultemps
set /a jj="100%DATE:~0,2% %% 100"
set /a mm="100%DATE:~3,2% %% 100"
set /a aa=%DATE:~6,4%

rem ATTENTION mettre les 3 lignes suivantes séparées par 1 espace sur 1 seule ligne

set /a j1="(((1461 * (%aa% + 4800 + (%mm% - 14) / 12)) / 4 + (367 * (%mm% - 2 - 12
* ((%mm% - 14) / 12))) / 12 - (3 * ((%aa% + 4900 + (%mm% - 14) / 12) / 100)) / 4 +
%jj% - 32075) - 2455021) * 86400 "

set /a h1= %time:~0,2% * 3600
set /a m1= %time:~3,2% * 60
set s1=%time:~6,2%

c'est un peu lourd mais fiable sur toutes les machines !
Un petit souci avec des conversions en octal pour les valeurs 08 et 09 m'a fait modifier cette procédure pour retirer le premier caractère de chaque valeur quand il s'agit d'un 0.
Mais sinon, la procédure semble fonctionner à merveille...

Mets la ligne suivante, ca fonctionne.

choice /t:o,30>nul
Exemple qui fonctionne avec WIN7:
choice /t 10 /D o "Pause de 10 secondes veuillez patienter.."

oui c'est très bien, ça marche très bien et il existe pléthore de programmes permettant de faire une pause dont Delay, Sleep, Wait, Waitn et autres mais ils ne sont PAS inclus avec windows XP ni Vista et demandent donc de télécharger un logiciel supplémentaire dans system32 où dans le dossier d'exécution ce qui limite la portabilité d'un script à son propre ordinateur ou celui d'utilisateurs avertis.

l'objectif sans aucune prétention du précédent script (call :attente x) étant de trouver une astuce permettant de gérer ce type de pause sans appel de logiciel externe supplémentaire au package "classique".

Tu auras peut-être noté qu'il est peut-être considéré comme superflu de tenir compte du nombre de jours depuis une date, mais, même si cela crée une ligne un peu démente, ça évite une boucle infinie si l'appel de la fonction est effectué à minuit moins 2 secondes (!)

à noter aussi que chez soi, ping 127.0.0.1 -n 5 >nul , ou ping -n 1 1.1.1.1 -w 5000 >nul conviennent très bien avec un réseau "normalement configuré".

A ce jour, il semble fonctionner correctement sur des ordinateurs de générations différentes et de systèmes différents (xp 2000 vista)

La manipulation de date est une bonne idée.
En revanche on reste dans le cadre d'une boucle quasi infinie consommant du CPU.
le probleme c'est que si on veut l'integrer dans un autre programme au lieu de continuer a la fin du temp le programme se ferme

bonjour ; ça fonctionne si ça intéresse ; utilisez worpad.exe pour les accents et + :

=> Avec worpad.exe on peut enregistrer un fichier au format texte ms-dos (oem/ansi).

CRC32: 51E5549F
MD5: F78BD9F46E877C48C5E48DB09CB9F361
SHA-1: 3D1780F8DF5C5ADBD32B70AC573891305416C7D1
SHA-256: A3C85571AD1C080B58B64417D8971FC20E6A02BAEA8C97F7AC85F2C46A2C4B4F

test20120129-22h26.bat

@echo off

setlocal

cls
echo €a commence ...
echo.

set varadd=0
set varnombre=0

rem 0 = 00 to 15 ; 1 = 16 to 255
set vardecihexaright=0
rem 0 = 0x00 to 0x09 ; 1 = 0x10 to 0x0F
set varhexaright=0

rem 0 = 00 to 15 ; 1 = 16 to 255
set vardecihexaleft=0
rem 0 = 0x00 to 0x09 ; 1 = 0x10 to 0xFF
set varhexaleft=0

:astc
set /a varadd=%varnombre%+1
set varnombre=%varadd%
echo %varnombre%

set varnbrighthexa="%varnombre%"
if "%varnombre%" == "10" (set varnbrighthexa="A")
if "%varnombre%" == "11" (set varnbrighthexa="B")
if "%varnombre%" == "12" (set varnbrighthexa="C")
if "%varnombre%" == "13" (set varnbrighthexa="D")
if "%varnombre%" == "14" (set varnbrighthexa="E")
if "%varnombre%" == "15" (set varnbrighthexa="F")

set varnbrlefthexa="%varnombre%"
if "%varnombre%" == "10" (set varnbrlefthexa="A")
if "%varnombre%" == "11" (set varnbrlefthexa="B")
if "%varnombre%" == "12" (set varnbrlefthexa="C")
if "%varnombre%" == "13" (set varnbrlefthexa="D")
if "%varnombre%" == "14" (set varnbrlefthexa="E")
if "%varnombre%" == "15" (set varnbrlefthexa="F")

set stocknbrhexa=%varnbrlefthexa%%varnbrighthexa%
echo %stocknbrhexa%

rem ****
rem temporisation
rem http://support.microsoft.com/kb/460936/
rem http://www.commentcamarche.net/forum/affich-2047032-faire-une-attente-sous-dos-batch

set secondbegin=%time:~6,2%
set /a secondelay=%secondbegin%+1
set secondtest=%secondelay%
if "%secondtest%" == "60" (set secondtest=1)
if "%secondtest%" == "61" (set secondtest=2)
if "%secondtest%" == "62" (set secondtest=3)

:paustmp
rem pause
set secondactueltest=%time:~6,2%
rem echo %secondtest%
rem echo %secondactueltest%
if not %secondactueltest% geq %secondtest% (goto paustmp)
rem ****

if "%varnombre%" equ "15" (goto fin)
goto astc

goto answer%ERRORLEVEL%
:answer0
echo Le programme a retourné le code 0
goto suite
:answer1
echo Le programme a retourné le code 1
:suite
echo.
pause

:fin
endlocal
exit /B


C'est très difficile de trouver certaines erreurs comme un fichier echo qui bloque 'echo.'

à+ ; le but est de faire un compteur hexadécimale et + ...

slt re ; infos liées, (pour plus tard ; pas testée) :

"à+ ; le but est de faire un compteur hexadécimale et + ..."

Source du lien ci-dessous :

[Batch] Fonctions utiles pour des chaînes de caractères [Trucs & Astuces] - Forum des professionnels en informatique :
http://www.developpez.net/forums/d906307/general-developpement/programmation-systeme/windows/scripts-batch/fonctions-utiles-chaines-caracteres/

lien =>

New technique: Convert dec to hex with undocumented variable - alt.msdos.batch.nt | Google Groupes :
http://groups.google.com/group/alt.msdos.batch.nt/browse_thread/thread/0ceeb574d4ac4baa/bdfd22b0fe20084a#bdfd22b0fe20084a

"> > Hello, I devised a quick way to convert decimal numbers to hexadecimal
> > using undocumented =ExitCode variable.

> Thank you Carlos -- this may be the tool of the year!

> Frank

Thanks Frank. About ExitCodeAscii, this is only seted when you exit
with number between 32 and 126, this return ascii character, example
if I do exit /b 90 ExitCodeAscii is 'Z'

I want to emphasize that my last version, is more fast than Timo vbs
version. Test with timethis.exe indicate that my code delay 0,078 and
timo vbs 0,109.

This is my final version:"


@echo off
call :Dec2Hex 10554896 ret
echo.%ret%
pause
goto :eof

:Dec2Hex
"%ComSpec%" /d /c exit /b %~1 >nul
for /f "eol=0 delims=0 tokens=*" %%# in (
"%=ExitCode%") do if not "%%#"=="" (
set %~2=%%#) else (set %~2=0)
goto :eof


Avec set /a on peut faire l'inverse ; de hex vers décimale (base 10) :

Le code ci-dessous convertit la valeur hexadécimale 2F5 en décimal :

set hexa=2F5
set /a valeur=0x%hexa%
echo %valeur%


Source :

FAQ Windows Batch :
http://windows.developpez.com/faq/batch/?page=fonctions-utiles#conversion-hexa-decimal

j'aurais voulu pouvoir utiliser set /a mais pour obtenir aussi un résultat en hexadécimal.

(( POC Download avec Hash+Taille => GégènBinaire | CommentCaMarche :
http://www.commentcamarche.net/forum/affich-24282430-poc-download-avec-hash-taille-gegenbinaire ))

à vous lire
slt re : le compteur hexa fonctionne ... :
Astuce convertir DEC to HEX & danseur '.bat' | CommentCaMarche :
http://www.commentcamarche.net/forum/affich-24364049-astuce-convertir-dec-to-hex-danseur-bat
/!\ Le programme utilise "timeout /T 1 > nul" :
C:\Windows\System32\timeout.exe Windows 7 x64
CRC32: 02B42444
MD5: 68A0A50CCAD87E1EE1944410A96D066C
SHA-1: D2F730BCD081532FE2787E28408133F67F593A5F
SHA-256: 7E93723C0C34EF98444E5CE9013FEF220975B96291A79053FD4C9B3D3550AEB3
32,5 Ko (33 280 octets) taille + hash = fichier (...).
fsutil file createnew c:\timeout.exe 33280 (crée un fichier vide de 33280 octets ; Windows)
00 00 00 00 test hash du fichier ; ici de 4 octets pour la démonstration rapide.
00 00 00 01 +1 (avec un script qui pilote XVI32 (éditeur hexa) ou à la main lol) et test hash
00 00 00 02 +1 (avec un script qui pilote XVI32 (éditeur hexa) ou à la main lol) et test hash
(...)
FF FF FF FF +1 et test hash (vous devez avoir trouvé un hash correspondant ...)
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
et choice pour winxp alors -?
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 870
Bonjour,

sleep x (avec x = Nb de secondes) répond au problème

Cordialement

yop
il y a une solution toute simple et qui engorge pas les script avec le logiciel "delay" que beaucoup ne connaisse pas car choice et pas compatible xp :p

donc telecharge delay la http://users.csc.calpoly.edu/~bfriesen/software/files/delay32.zip

dezippe le dans windows et maintenant tu a juste a marker le temp je te donne un exmple de script

@echo off
start notepad.exe
@echo attente de 30seconde avant la reprise
delay 30
@echo attente terminer
start calc.exe
pause

voila donc ces un exemple tou con pour te montrer donc on lance notepad puis le message @echo attente de 30seconde avant la reprise ce marke puis en dessous le compte a rebours defile au bout de 30seconde le texte attente terminer saffiche et lance lla calculatrice j ai mis une pause a la fin pour que la fenetre reste ouverte mais tu peut l enlever :)

donc le script terminer ca donne ca

attente de 30seconde avant la reprise
Pausing for 0
attente terminer
Appuyez sur une touche pour continuer...

voilas cette exemple je lé fait le plus simple possible

pour le temp tu a juste a changer le temp a coter de "delay"
voila
slt

J'ai trouvé cela dans Windows 7 x64 Home Premium ; à tester :

C:\Users\%USERNAME%>timeout /?

TIMEOUT /T délai_d'attente /NOBREAK

Description :
    Cet utilitaire accepte un paramètre de délai d'attente qui définit la
    période de temps d'attente (en secondes) ou jusqu'à ce qu'une frappe de
     touche se produise. Il accepte également un paramètre pour ignorer
     l'utilisation d'une touche.

Liste de paramètres :
    /T        délai_maximal Spécifie le nombre de secondes d'attente.
                            La plage valide est comprise entre
                           -1 et 99999 secondes.

    /NOBREAK                Ignorer l'utilisation des touches et attendre le
                            temps indiqué.

    /?                      Affiche ce message d'aide.

Remarque : une valeur de délai d'attente égale à -1 signifie qu'une
           frappe de touche est attendue.

Exemples :
    TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1

C:\Users\%USERNAME%>


+

* TIMEOUT /T 10 | echo test pour changer le texte
* TIMEOUT /T 10 > nul pour ne rien voir

* TIMEOUT /T 10 > nul | echo test cumul sans plus d'effet(s)

2 questions, s'il vous plaît ; merci :

Comment RE-écrire sur la même ligne sans sauter de ligne (e.g. avec echo) ?

Avec "title /?" = "Définit le titre de la fenêtre pour une fenêtre DOS" ; oui mais c'est une astuce limitée et ce n'est pas une réponse directe à la question posée.

Comment récupérer le OU LES codes des touches appuyées (plusieurs) ?

Avec NOBREAK on peut appuyer plusieurs fois sur le clavier ...

Faire une pause c'est bien, mais il faut pouvoir tester à la sortie ce que l'utilisateur a fait, afin de pouvoir proposer mieux = test conditionnel (if then else). Et dans l'aide des commandes, on ne trouve pas les codes pour la variable spéciale %ERRORLEVEL% (echo %ERRORLEVEL% = 0) ; même si on a pas directement le code de la touche, quoique avec la commande "choice /?" ça marche mais il faut utiliser uniquement les touches choisies et pas n'importe quelle touche pour sortir (en dehors de la durée limite en option avant choix par défaut à définir obligatoirement).

merci par avance

à vous lire
slt re ; j'ai trouvé une astuce mais ce n'est pas du tout parfait ; bien que ça fonctionne :

Comment RE-écrire sur la même ligne sans sauter de ligne (e.g. avec echo) ?

Ça clignotera à fond (encore plus) si timeout n'est pas réglé à 1 seconde ou plus.

Ça clignote trop et la réécriture de plusieurs lignes ralenti le processus global ...

Vous pouvez faire un film ; une animation :*-)) !

@echo off
setlocal

set varadd=0
set varnombre=0

set damier=1

:astc
set /a varadd=%varadd%+(0x01)
set varnombre=%varadd%
mode con:lines=25
:
echo Start test ...
echo.
echo demo pour afficher un compteur sans sauter de lignes avec echo
echo.
echo ce n'est pas du tout parfait (clignotage) mais cela fonctionne
echo.
echo Astuce = mode con:lines=25 (25 peut venir depuis une variable)
echo.
if %damier%==2 (goto damier2)
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß LE DAMIER CHANGE DE FORME 8=))
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
set damier=2
goto findamier1
:damier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ LE DAMIER CHANGE DE FORME 8=))
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
set damier=1
:findamier1
echo.
:
echo compteur %varnombre%
if /i %varnombre% geq 20 goto eof
echo.
echo Sortie quand le compteur affichera 20
timeout /T 1 > nul
goto astc

:eof
echo.
echo sortie du test
echo.
pause
endlocal
exit


1021 octets (1 021 octets)

CRC32: 6909C08A
MD5: 474611FB4C07B8156D0EE0305D98FB06
SHA-1: B8C14C04050299424BD5B4E4C40D06EEB33F97BE
SHA-256: 40DBC0295833B82085A581CAE5B3848599C7CD031E2BD3589315C8778248B5A4

Avec la souris on ne peut pas copier ; la fenêtre se vide quand on clic ;-)) ; cela peut servir.

Idem, par le menu ... ;-)) ; et dans les deux cas, le programme (le compteur) est en pause.

Appuyez sur une touche (focus dans l'invite de commandes) pour continuer :--) !

(( Il devrait être possible de tester, si l'écran est vide + de 1 seconde ou si c'est normal ?
Puis agir selon cela ... ; jeu, test, ... ))

Le compteur hexadécimale ne fonctionne pas comme je le souhaiterais (sauf erreur de code) car le résultat semble n'être disponible qu'au format décimale même si c'est bien de pouvoir ajouter un nombre hexadécimal en l'additionnant (par exemple) à un autre.

à vous lire
slt re ; mon danseur est cool :-D)

Danseur20120201-01h53m00-1610octectsCRC32=948DD4CF.bat

1,57 Ko (1 610 octets)

CRC32: 948DD4CF
MD5: EFA9EB26A850F1A8BB69A247C5A49624
SHA-1: 152879D27142AE6D6318CEB418E624107D6C8686
SHA-256: 1BCA815A2E24D4C87489D8B67EAD1C1A6C3C76794773632671DEB9198897D7C2

(( POC Download avec Hash+Taille => GégènBinaire | CommentCaMarche :
http://www.commentcamarche.net/forum/affich-24282430-poc-download-avec-hash-taille-gegenbinaire ))

@echo off
setlocal

set varadd=0
set varnombre=0

set danse=1
set damier=1

:astc
set /a varadd=%varadd%+(0x01)
set varnombre=%varadd%
mode con:lines=25
:
echo Start test ...
echo.
echo demo pour afficher un compteur sans sauter de lignes avec echo
echo.
echo ce n'est pas du tout parfait (clignotage) mais cela fonctionne
echo.
echo Astuce = mode con:lines=25 (25 peut venir depuis une variable)
echo.
:
if not %danse%==1 goto danse2
echo       o
echo       (\  danse with me 8-D)
echo       /\
set danse=2
goto dansefincycle
:
:danse2
if not %danse%==2 goto danse3
echo         o
echo        =   danse with me 8-D)
echo       /\
set danse=3
goto dansefincycle
:
:danse3
if not %danse%==3 goto danse4
echo        \o/
echo         )  danse with me 8-D)
echo        /\
set danse=4
goto dansefincycle
:
:danse4
if not %danse%==4 goto dansefincycle
echo       o
echo       )=   danse with me 8-D)
echo       /\
set danse=1
:dansefincycle
:
echo.
:
if %damier%==2 (goto damier2)
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß LE DAMIER CHANGE DE FORME 8=))
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
set damier=2
goto findamier1
:damier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ LE DAMIER CHANGE DE FORME 8=))
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
set damier=1
:findamier1
echo.
:
echo compteur %varnombre%
if /i %varnombre% geq 20 goto eof
echo.
echo Sortie quand le compteur affichera 20
timeout /T 1 > nul
goto astc

:eof
echo.
echo sortie du test
echo.
pause
endlocal
exit


à vous lire :*-))
slt ; version du danseur avec bonus (versions précédentes détruites) :

Danseur20120201-03h31m00-2546octectsCRC32=20725800.bat

2,48 Ko (2 546 octets)

CRC32: 20725800
MD5: 8B91019EBBDE66DAAA4837E721BA4839
SHA-1: 3EA1990AE3DC89927B2C8E709A615B372951807F
SHA-256: AD67D4B2F68D6DB4C4FB187EEFE2401FAA76B6989FA981B79BD544927F4741E0

@echo off
setlocal

set varadd=0
set varnombre=0

set danse=1
set damier=1

:astc
set /a varadd=%varadd%+(0x01)
set varnombre=%varadd%
mode con:lines=25
:
echo Start test ...
echo.
echo demo pour afficher un compteur sans sauter de lignes avec echo
echo.
echo ce n'est pas du tout parfait (clignotage) mais cela fonctionne
echo.
echo Astuce = mode con:lines=25 (25 peut venir depuis une variable)
echo.
:
:danse1
if not %danse%==1 goto danse2
echo       o
echo       (\   danse  with  me  8-D)
echo       /\
set danse=2
goto dansefincycle
:
:danse2
if not %danse%==2 goto danse3
echo         o
echo        =   danse  with  me  8-D)
echo       /\
set danse=3
goto dansefincycle
:
:danse3
if not %danse%==3 goto danse4
echo        \o/
echo         )  danse  with  me  8-D)
echo        /\
set danse=4
goto dansefincycle
:
:danse4
if not %danse%==4 goto danse5
echo       o
echo       )=   danse  with  me  8-D)
echo       /\
set danse=5
goto dansefincycle
:
:danse5
if not %danse%==5 goto danse6
echo       o
echo       (\   danse  with  me 8,-D)
echo       /\
set danse=6
goto dansefincycle
:
:danse6
if not %danse%==6 goto danse7
echo         o
echo        =   danse  with  me 8,-D)
echo       /\
set danse=7
goto dansefincycle
:
:danse7
if not %danse%==7 goto danse8
echo        \o/
echo         )  danse  with  me  8-D)
echo        /\
set danse=8
goto dansefincycle
:
:danse8
if not %danse%==8 goto dansefincycle
echo       o
echo       )=   danse  with  me  8-D)
echo       /\
set danse=1
:dansefincycle
:
echo.
:
if %damier%==2 (goto damier2)
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
if not %danse%==7 goto dansedamier1
echo ÜßÜßÜßÜßÜßÜßÜßÜß LE DAMIER CHANGE DE FORME 8;=D))
:dansedamier1
if %danse%==7 goto finsouriredamier1
echo ÜßÜßÜßÜßÜßÜßÜßÜß LE DAMIER CHANGE DE FORME 8=))
:finsouriredamier1
echo ÜßÜßÜßÜßÜßÜßÜßÜß
echo ÜßÜßÜßÜßÜßÜßÜßÜß
set damier=2
goto findamier1
:damier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
if not %danse%==7 goto dansedamier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ LE DAMIER CHANGE DE FORME 8;=D))
:dansedamier2
if %danse%==7 goto finsouriredamier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ LE DAMIER CHANGE DE FORME 8=))
:finsouriredamier2
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
echo ßÜßÜßÜßÜßÜßÜßÜßÜ
set damier=1
:findamier1
echo.
:
echo compteur %varnombre%
if /i %varnombre% geq 20 goto eof
echo.
echo Sortie quand le compteur affichera 20
timeout /T 1 > nul
goto astc

:eof
echo.
echo sortie du test
echo.
pause
endlocal
exit


Il manque une trappe pour la fin dans le dancefloor et des cris en texte, nnoon ... :-))

à vous lire :*-))
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
C:\>choice /t:o,30>nul
'choice' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.

C:\>
-???
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 870
Salut,

Availability
Choice.com was originally supplied on the Windows 95 install CD, however there are some issues with this version under NT - multiple concurrent invocations of CHOICE will clobber each other. CHOICE.com will also burn a lot of CPU's when in a wait state.
The NT and 2000 Resource Kits contain CHOICE.EXE which behaves a lot better.
In Windows 2003 CHOICE became a built-in command so it is no longer in the resource kit.

http://www.ss64.com/nt/choice.html
@echo off

setlocal enableextensions
setlocal enabledelayedexpansion

rem
rem crude DOS wait sleep routine (0-59 secs)
rem

set sl=%1
if defined sl (
if !sl! gtr 59 (
echo.
echo Max wait. 59 secs.
echo.
goto :end_script
)
call :sleep %sl%
) else (
set /p sl=Enter sleep time ^(0-59 secs^):
if !sl! gtr 59 (
echo.
echo Max wait. 59 secs.
echo.
goto :end_script
)
call :sleep !sl!
)

goto :end_script

:sleep
if not defined 2 (
set /a w_time=0
) else (
set /a w_time=%2
)
for /f "tokens=4 delims=:" %%i in ('echo. ^| time') do (
set t1=N%%i
set t1=!t1:N00.0=!
set t1=!t1:N00=!
set t1=!t1:N0=!
set t1=!t1:N=!
set t1s=!t1:.=!
set /a t1f=!t1s!
)
:s_time
for /f "tokens=4 delims=:" %%i in ('echo. ^| time') do (
set t2=N%%i
set t2=!t2:N00.0=!
set t2=!t2:N00=!
set t2=!t2:N0=!
set t2=!t2:N=!
set t2s=!t2:.=!
set /a t2f=!t2s!
)
if !t2f! lss !t1f! set /a t2f=!t2f!+6000

set /a w_time=!t2f!-!t1f!
set /a m_time=%1*100

if !w_time! leq !m_time! goto :s_time %1 !w_time!

goto :end_sleep

:end_sleep

:end_script

endlocal

bonjour
bon script, mais ne fonctionne pas sous dos en paramètres régionaux "france" car dans time le point est remplacé par une virgule.
il faut donc ajouter la ligne suivante pour remplacer cette virgule (si elle est là) par un point
après set t1=N%%i il faut ajouter
set t1=!t1:,=.!
et après set t2=N%%i il faut ajouter
set t2=!t2:,=.!
Merci,

mais comment fait on pour choisir le temps? 30 seconde, ou deux minutes, ou autre?
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
pause affiche juste "appuyer sur une touche pour continuer..."
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
desole mais sous xp, ca remarche pas :
------------------------------------------

C:\Documents and Settings\Administrateur.TITANIUM>CHOICE do you like me ?
'CHOICE' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
------------------------------------------
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
tu mets un "pause" a la ligne c'est tout
Oblige une interaction usager. Ce n'est pas ce qui est demandé.
Bah oui je sais bien mais je recherche quelque chose qui se fasse automatiquement sans avoir besoin de toucher a quoi que se soit. donc pause ca ne va pas. :(

Merci quand même, si vous avez d'autre idées je suis preneur...
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
desole, je crois que ma boite a idee est vide. a moins que tu n'ecrives ton propre interpreteur, je ne vois pas d'autres solutions. ou tu pourrai peut etre ecrire un petit programme en ligne de commande que tu appelles dans ton batch en lui passant la duree de son execution du genre

copy ...
wait 60
...
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 870
Colle ça dans "sytem32" (après détarrage) : http://eyn.free.fr/CHOICE.ZIP
C:\DOCUME~1\jp>CHOICE do you like me ?
do you like me ? [Y,N]?Y

C:\DOCUME~1\jp>
;-))
Messages postés
135
Date d'inscription
lundi 8 avril 2002
Statut
Membre
Dernière intervention
21 janvier 2009
21
ah! fallait y penser, thanks :)
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 870
Ben fallait juste lire ;-))
Félicitation djik ce command est bien fait et test avec succer