Faire une attente sous dos (batch)

Résolu
mathhieu -  
CharlesDelo Messages postés 1 Statut Membre -
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

  • 1
  • 2
Résumé de la discussion

La problématique centrale consiste à insérer une temporisation dans un script batch afin de faire une pause avant de reprendre l’exécution. Des solutions historiques existent, notamment utiliser ping pour simuler un délai sur XP, ou recourir à timeout, Sleep/Choice, et des approches basées sur des boucles. D'autres méthodes évoquées incluent une boucle avec compteur et condition de sortie, des solutions externes avec Delay ou des variantes utilisant la commande timeout selon le système. En cas de portabilité et de compatibilité, plusieurs méthodes coexistent selon le système et les outils accessibles, les délais obtenus étant plus prévisibles avec timeout ou une gestion interne du temps que par ping.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. djik
     
    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
    1. andykimpe
       
      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
      5
    2. PG51
       
      05 pour 5 secondes
      -2
    3. darklight
       
      merci beaucoup car grace a toi j'ai reusi merci encore
      0
    4. CharlesDelo Messages postés 1 Statut Membre 1
       
      Merci andykimpe timeout me suffit pour ma part et fonctionne ok
      1
  2. floxi Messages postés 153 Statut Membre 94
     
    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
    19
    1. Silence
       
      Le temps d'attente va varier en fonction de la vitesse du processeur.
      0
  3. Jean-François Pillou Messages postés 18961 Date d'inscription   Statut Webmaster Dernière intervention   63 308
     
    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<<
    12
  4. patatesaulard
     
    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 !
    11
    1. loufanou
       
      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...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bobthetavernist
     
    Mets la ligne suivante, ca fonctionne.

    choice /t:o,30>nul
    5
    1. franck
       
      Exemple qui fonctionne avec WIN7:
      choice /t 10 /D o "Pause de 10 secondes veuillez patienter.."
      0
  7. patatesaulard
     
    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)
    5
    1. patatesaulard
       
      version simplifiée de la boucle d'attente fonctionnant sur tous les ordinateurs et sans paramètres spéciaux de comportement ni programme spécifique
      @echo off
      echo.
      echo test de boucle d'attente sous dos
      echo appel de la routine pour 6 secondes d'attente

      call :attente 6

      echo l'attente (6secondes) est finie, le script peut continuer
      pause

      goto eof

      :attente
      rem pour appeler cette routine (temps en secondes) call :attente 5
      call :calcultemps
      set /a t1= %t2% + %1
      :boucleattente
      call :calcultemps
      if "%t2%" LSS "%t1%" goto boucleattente
      goto :eof
      :calcultemps
      set /a h1= %time:~0,2% * 3600 1>nul 2>&1
      set /a m1= %time:~3,2% * 60 1>nul 2>&1
      set s1=%time:~6,2% 1>nul 2>&1
      set /a t2= %h1% + %m1% + %s1% 1>nul 2>&1
      goto :eof
      0
    2. patatesaulard
       
      version plus complète avec prise en compte du changement de jour , affichage du temps restant, et beep final

      @echo off
      echo.
      echo test de boucle d'attente sous dos

      call :attente 12

      pause
      goto eof

      :attente
      rem pour appeler cette routine (temps en secondes) call :attente 5
      set c2=.
      set c3=%1
      echo appel de la routine pour %1 secondes d'attente
      call :calcultemps
      set /a t1a= %t2%
      set /a t1= %t2% + %1
      rem ajouter éventuellement des 2 espaces après patienter
      (Set /P paf= patienter ) <NUL

      :boucleattente
      call :calcultemps
      set /a c1= %t2% - %t1a%
      if %c1% LSS 0 (
      set /a c1= 0
      set /a c3= %t1% - 86400
      set /a c2= %t1% - 86400
      set /a t1a= 0
      set /a t1= %t1% - 86400
      )
      :efface
      rem si fonctionne pas
      rem supprimer l'espace qui se met au copier coller en fin de ligne suivante : set c2=%c2:~0,-1%
      set c2=%c2:~0,-1%
      rem paf= caractère BS effacement arrière obtenu avec alt 008 avec notepad++
      (Set /P paf=) <NUL
      if not "%c2%"=="" goto efface
      set /a c2=%c3% - %c1%
      (Set /P paf=%c2%s ) <NUL
      if not %c2% leq 0 goto boucleattente

      (Set /P paf=) <NUL
      echo l'attente de %1s est finie le script continue
      rem son via carte mère : caractère : alt 007
      echo 
      rem son via la carte son
      rundll32 user32.dll,MessageBeep
      goto :eof

      :calcultemps
      set /a h1= %time:~0,2% * 3600 1>nul 2>&1
      set /a m1= %time:~3,2% * 60 1>nul 2>&1
      set s1=%time:~6,2% 2>&1
      set /a t2= %h1% + %m1% + %s1% 1>nul 2>&1
      goto :eof
      0
    3. the_felis_leo
       
      La manipulation de date est une bonne idée.
      En revanche on reste dans le cadre d'une boucle quasi infinie consommant du CPU.
      0
    4. Ga-Hell
       
      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
      0
    5. librequetucrois
       
      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 + ...
      0
  8. anonyme
     
    Bonjour,

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

    Cordialement
    3
  9. heuchuitoumoche
     
    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
    3
  10. librequetucrois
     
    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
    3
    1. librequetucrois
       
      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
      0
    2. librequetucrois
       
      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 :*-))
      0
    3. librequetucrois
       
      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 :*-))
      0
  11. rameur Messages postés 135 Statut Membre 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:\>
    -???
    2
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
      0
  12. ruben
     
    @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
    2
    1. patatesaulard
       
      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:,=.!
      0
  13. mathhieu
     
    Merci,

    mais comment fait on pour choisir le temps? 30 seconde, ou deux minutes, ou autre?
    1
    1. rameur Messages postés 135 Statut Membre 21
       
      pause affiche juste "appuyer sur une touche pour continuer..."
      0
  14. rameur Messages postés 135 Statut Membre 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.
    ------------------------------------------
    1
  15. rameur Messages postés 135 Statut Membre 21
     
    tu mets un "pause" a la ligne c'est tout
    0
    1. Silence
       
      Oblige une interaction usager. Ce n'est pas ce qui est demandé.
      0
  16. mathhieu
     
    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...
    0
  17. rameur Messages postés 135 Statut Membre 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
    ...
    0
  18. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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>
    ;-))
    0
  19. rameur Messages postés 135 Statut Membre 21
     
    ah! fallait y penser, thanks :)
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ben fallait juste lire ;-))
      0
  20. oubourigue
     
    Félicitation djik ce command est bien fait et test avec succer
    0
  • 1
  • 2