Rechercher : dans
Par :

Faire une attente sous dos (batch)

Dernière réponse le 20 sep 2009 à 22:03:19 mathhieu, le 19 jan 2006 à 16:17:33 
 Signaler ce message aux modérateurs

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

1

rameur, le 19 jan 2006 à 17:11:56

Tu mets un "pause" a la ligne c'est tout

Répondre à rameur

2

mathhieu, le 19 jan 2006 à 17:24:14

Merci,

mais comment fait on pour choisir le temps? 30 seconde, ou deux minutes, ou autre?

Répondre à mathhieu

3

rameur, le 20 jan 2006 à 10:44:43

Pause affiche juste "appuyer sur une touche pour continuer..."

Répondre à rameur

4

mathhieu, le 20 jan 2006 à 15:48:50

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

Répondre à mathhieu

5

rameur, le 20 jan 2006 à 16:04:03

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

Répondre à rameur

6

bobthetavernist, le 25 jan 2006 à 16:56:43

Mets la ligne suivante, ca fonctionne.

choice /t:o,30>nul

Répondre à bobthetavernist

7

rameur, le 26 jan 2006 à 13:40:25

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:\>
-???

Répondre à rameur

9

jipicy, le 26 jan 2006 à 13:49:41

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 Z'@+...che et Bonne Année 2006.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

8

Jeff, le 26 jan 2006 à 13:47:01
  • +1

http://www.robvanderwoude.com/index.html

Voir l'astuce en utilisant la commande ping, qui permet de fixer un délai en secondes... fallait y penser :-)
Webmaster(@)CommentCaMarche.net
>>010000110100001101001101<<

Répondre à Jeff

10

rameur, le 26 jan 2006 à 13:56:27

Et choice pour winxp alors -?

Répondre à rameur

11

jipicy, le 26 jan 2006 à 14:02:07

http://www.ss64.com/nt/
http://www.robvanderwoude.com/choice.html (merci Jeff) Z'@+...che et Bonne Année 2006.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

12

rameur, le 26 jan 2006 à 17:00:33

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

Répondre à rameur

13

jipicy, le 26 jan 2006 à 18:02:00

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>
;-)) Z'@+...che et Bonne Année 2006.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

14

rameur, le 30 jan 2006 à 14:32:36

Ah! fallait y penser, thanks :)

Répondre à rameur

15

jipicy, le 30 jan 2006 à 17:15:13

Ben fallait juste lire ;-)) Z'@+...che.

JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

16

anonyme, le 16 jan 2007 à 13:13:42

Bonjour,

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

Cordialement

Répondre à anonyme

17

djik, le 7 jun 2007 à 21:03:03
  • +2

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

Répondre à djik

18

oubourigue, le 8 déc 2007 à 19:59:43

Félicitation djik ce command est bien fait et test avec succer

Répondre à oubourigue

19

floxi, le 9 déc 2007 à 01:54:26
  • +4

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 http://batcher.ath.cx/fonctions.php#sauts
Flox

Répondre à floxi

20

patatesaulard, le 20 sep 2009 à 09:58:00

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 !

Répondre à patatesaulard

21

heuchuitoumoche, le 20 sep 2009 à 11:44:13

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

Répondre à heuchuitoumoche

22

patatesaulard, le 20 sep 2009 à 18:18:33

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)

Répondre à patatesaulard

23

 tchsimons, le 20 sep 2009 à 22:03:19

Un boucle qui tourne dans le vide peut etre une solution

Répondre à tchsimons