Faire une attente sous dos (batch)
Résolu
mathhieu
-
CharlesDelo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
CharlesDelo Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
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
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
A voir également:
- Batch pause 10 secondes
- Cmd pause - Meilleures réponses
- Pause cmd - Meilleures réponses
- Clé d'activation windows 10 - Guide
- Restauration systeme windows 10 - Guide
- Fichier batch - Guide
- Windows 10 ne démarre plus - Guide
- Windows 10 gratuit - Accueil - Mise à jour
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
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
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:
cela fonctionne aussi, si tu veut plus d'infos regarde Publicité supprimée Modération CCM
Flox
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
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<<
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
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
@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
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
@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
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
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 + ...
=> 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 + ...
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
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 :
+
* 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
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 :*-)) !
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
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 ))
à vous lire :*-))
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
Il manque une trappe pour la fin dans le dancefloor et des cris en texte, nnoon ... :-))
à vous lire :*-))
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 :*-))
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:\>
-???
'choice' n'est pas reconnu en tant que commande interne
ou externe, un programme exécutable ou un fichier de commandes.
C:\>
-???
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
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
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:,=.!
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:,=.!
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.
------------------------------------------
------------------------------------------
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.
------------------------------------------
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...
Merci quand même, si vous avez d'autre idées je suis preneur...
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
...
copy ...
wait 60
...
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>;-))
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