CommentCaMarche
Recherche
Posez votre question Signaler

[Batch] WinXP : Attendre 10 seconde ?

archimed - Dernière réponse le 11 févr. 2015 à 07:17
Salut :)

J'ai un petit probléme en batch :(

Je voudrai que le script fasse une pause de 10 seconde, et ensuite continue tout seul.
Le probléme c'est que je ne trouve pas comment faire.
Je suis sous windows XP et en batch il n'y a plus de Wait ni de Sleep, et je voudrai si possible ne pas avoir a ajouter un "composant" non natif, comme le sleep de win 2k.

Pause ne va pas car je ne veux pas a avoir a appuyer sur une touche, et un ping c'est un peu "tordu" pour faire une pause.

Si quelqu'un pourrai m'aider merdi beaucoup
Lire la suite 
Réponse
+35
moins plus
Kaijlh a raison, moi pour ce genre de chose j'utilise toujours:

ping 127.0.0.1 -n X > NUL

Ou X est le temps d'atente en seconde + 1 il faut donc metre 11 dans ton cas.
Ca donne:

ping 127.0.0.1 -n 11 > NUL

J'espre que ça ta aider.
Ciao
Damien P
Ajouter un commentaire
Réponse
+12
moins plus
cs-bilou, ton script s'appelle de l'attente active, tu vas exécuter N fois l'instruction "if %heurminuteseconde% EQU %time:~0,8% (goto fin) else goto start2" tant que la condition est fausse, et par conséquent saturer ton processeur pendant toute l'attente... Tu imagines le nombre d'instructions que ton programme va exécuter?

Un sleep provoque une mise en veille du processus, soit une attente passive ne consommant aucune ressource, le script attendant simplement un signal système pour se réveiller.

Ta solution est donc à éviter !
Ajouter un commentaire
Réponse
+8
moins plus
salut

j'ajoute au lieu de ping 127.0.0.1 vous pouvez tous simplement la remplacer par localhost :

ping localhost -n 11 > NUL


karirovax ;)
Ajouter un commentaire
Réponse
+7
moins plus
Excusé moi mais le script que je vous avez donner étais foireux voila le nouveau:

@echo off

set temps=X

set /a secondefin=%time:~6,2%+%temps%
if %secondefin% GEQ 60 (goto def) else goto inf1minute


:inf1minute
if %secondefin% EQU %time:~6,2% (goto fin) else goto inf1minute




:def
set /a seconde=%time:~6,2%
set /a minute=%time:~3,2%
set /a heur=%time:~0,2%
set /a minutefin=%time:~3,2%
set /a heurfin=%time:~0,2%
goto sup1minute

:sup1minute
set /a secondefin=%secondefin%-60
set /a minutefin=%minutefin%+1
set minutesecondefin=%minutefin%:%secondefin%
if %secondefin% GEQ 60 (goto sup1minute) else goto sup1heur


:sup1heur
if %minutefin% GEQ 60 (goto sup1heur2)

:sup1heur2
set /a minutefin=%minutefin%-60
set /a heurfin=%heurfin%+1
set heurminuteseconde=%heurfin%:%minutefin%:%secondefin%
if %minutefin% GEQ 60 ( goto sup1heur) else goto start2

:start2
if %heurminuteseconde% EQU %time:~0,8% (goto fin) else goto start2


:fin
pause


Il suffit de remplacer le X par le nombre de seconde que vous voulez attendre.
Normalement avec ce script vous pouvez attendre jusqu'à 1 ou 2 heure mais bon...



Ajouter un commentaire
Réponse
+6
moins plus
sleep.exe <nombre de secondes>
bravo à la créativité de certains ^^
Ajouter un commentaire
Réponse
+4
moins plus
choice /c:ON /n /t:O,20

où /n évite l'affichage (O/N) des lettres désignées par /C:
et /t: donne le résultat par défaut O (Oui) dans 20 secondes.

La commande et ses commutateurs sont valables des versions DOS 6 à 8 (et ?? ...).
Ajouter un commentaire
Réponse
+2
moins plus
je pense qu'un petit ping -n aurai fait l'affaire, du genre:
ping -n 10 192.168.0.1

a+
Kaijlh
Ajouter un commentaire
Réponse
+2
moins plus
Boujours de peut etre que ce post est vieu mais j'ai reprit le bout du Soft a Yugo pour le modifier le voila:


@echo off
set temps="X"

set /a secondefin=%time:~6,2%+%temps%
if "%temps%"=="60" goto 1minute
if "%secondefin%" LSS "60" goto start
if "%secondefin%" GTR "60" goto menu


:1munute
set /a minutefin="%time:~3,2%"+"1"
set minutesecondefin=%minutefin%:%time:~6,2%
goto start2

:start2
if "%minutesecondefin%" EQU "%time:~3,5%" (goto fin) else goto start2



:menu
set /a secondefin="%secondefin%"-"60"
goto start

:start
if "%secondefin%"=="%time:~6,2%" (goto fin) else goto start

:fin
pause



Je les modifier maintenant vous devener replacer X par un nombre entre 0 et 119 seconde.
Même si se post date j'espere qu'il aidera du monde.


greg1107 59Messages postés mercredi 3 juin 2009Date d'inscription 4 août 2010Dernière intervention - 13 juil. 2010 à 13:56
un grand merci c'est super ça va bien me servir.
Le temps et l'espace n'existe pas sur la toile
Bien à toi

greg1107
Répondre
karirovax 3223Messages postés dimanche 17 janvier 2010Date d'inscription 17 décembre 2014Dernière intervention - 13 juil. 2010 à 16:39
salut , pour 10 secondes voilà un test "avec des beep " :

@echo off
echo.
echo Salut %username% ;)
echo.
echo ceci est un test
echo.
echo ???????????????????????????????????????»
ECHO ? ?
echo ? ceci est un test ?
ECHO ? ?
echo ???????????????????????????????????????¼
echo.
SET load=
SET /A loadnum=0

:Loading
set /p "=#" <nul
PING -n 2 localhost >nul
SET /A loadnum+=1
IF not %loadnum% EQU 11 GOTO :loading
echo.
echo.
pause
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
le probléme avec une boucle c'est que ca risque d'utiliser le cpu à 100% ! :(

Y'a vraiment rien en natif sous XP pour faire ca ? c'est bizarre quand même !!
Ajouter un commentaire
Réponse
+1
moins plus
ne tkt pas j' ai le meme probleme que toi et je suis sur que tu n' est pas le seul !
Ajouter un commentaire
Réponse
+0
moins plus
Une idée bête mais pourrait marcher:
Fais une boucle de i=1 à 100000 par exemple, tu mets rien dans la boucle. Mais tu ne peux pas contrôler rigoureusement la duréee
Ajouter un commentaire
Réponse
+0
moins plus
un petit truc qui marche grace à l'horloge du pc

X est le temps en seconde faut pas dépasser 9 sinon ça merde un peu

set /A heurfin=%time:~6,2%+X
:start
set /a heur=%time:~6,2%
set /a temprestant=%heurfin%-%heur%
if "%heurfin%"=="%heur%" goto finpause
goto start
:finpause
Ajouter un commentaire
Réponse
+0
moins plus
dans ms-dos il n y a pas de commande pour lui dire d attendre X segondes mai j ai une astuce : tape sa et procure toi ce porgrammes de MS(DOS 6.22 fr ou us

CHOICE.EXE et tape ou mai sa dans ton batch :

@CHOICE /T:O,2 /N

le 2 represante le nombre de segondes que il doit attendre avant de continue tout seule et si tu veut choice.exe envoi moi un mail et je te l envoi par mail en cliquer sur repondre BAYE.
Ajouter un commentaire
Réponse
+0
moins plus
...à choper dans un kit de ressources techniques, ou sur le portage win32 des utilitaires GNU.
Ajouter un commentaire
Réponse
+0
moins plus
set num=0
:1
if %num% == X goto 2
set /a num+=1 >nul
goto 1
:2

remplace "X" par les nombre de milliseconde que tu veut attendre.
Ajouter un commentaire
Réponse
+0
moins plus
TIMEOUT /T (temps en secondes) /NOBREAK

dans ton cas pour 10 secondes

TIMEOUT /T 10 /NOBREAK

timeout /? tu trouveras quelques info supp
Ajouter un commentaire
Ce document intitulé «  [Batch] WinXP : Attendre 10 seconde ?  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.