Hacer una espera en un archivo por lotes (batch)

Resuelto
mathhieu -  
CharlesDelo Mensajes publicados 1 Estado Membre -
Hola,

quisiera insertar una pausa entre dos líneas en un programa .bat, pero no conozco la sintaxis, ¿alguien podría ayudarme? Quiero hacer una pausa de 30 segundos y luego continuar después.

Gracias

24 réponses

  • 1
  • 2
djik
 
Hola,

Entonces Sleep, Wait y Choice NO están incluidos en Windows XP.
Una solución es la que mencionó Jeff:

ping -n 'número de segundos +1' 127.0.0.1 >nul
65
andykimpe
 
mira del lado del comando timeout

ej: timeout /t temp en segundos

ej: timeout /t 60

y para no mostrar ningún mensaje

ej: timeout /t 60>nul

si msdos te dice que el comando no existe intenta

c:\Windows\System32\timeout /t 60>nul
5
PG51
 
05 para 5 segundos
-2
darklight
 
Muchas gracias porque gracias a ti he logrado, gracias de nuevo.
0
CharlesDelo Mensajes publicados 1 Estado Membre 1
 
Gracias, andykimpe. Timeout me basta y funciona bien por mi parte.
1
floxi Mensajes publicados 153 Estado Membre 94
 
Otra solución para crear una temporización en un batch es incrementar una variable en un bucle con un umbral como condición de salida

ejemplo:
:bucle set /a count = count + 1 if %count%==30000 goto finbucle goto bucle :finbucle 


esto también funciona, si quieres más información mira Publicidad eliminada Moderación CCM

Flox
19
Silence
 
El tiempo de espera variará en función de la velocidad del procesador.
0
Jean-François Pillou Mensajes publicados 18962 Fecha de registro   Estado Webmaster Última intervención   63 308
 
http://www.robvanderwoude.com/index.html (enlace muerto)
Nuevo enlace: https://www.robvanderwoude.com/wait.php

Ver el truco utilizando el comando ping, que permite fijar un retraso en segundos... había que pensarlo :-)

Webmaster(@)CommentCaMarche.net
>>010000110100001101001101<<
12
patatesaulard
 
Hola,

el PING no funciona en todos los ordenadores
el bucle no es preciso para el tiempo y varía demasiado de un ordenador a otro
así que he imaginado una espera que tiene en cuenta la hora del sistema:

@echo off
set tiempo_paused=5
echo prueba de pausa: el tiempo de pausa es aquí de %tiempo_paused% segundos
echo.
call :espera %tiempo_paused%
echo %tiempo_paused% más tarde este mensaje se muestra
echo.
echo el batch va a terminar ahora en 10 segundos
call :espera 10
exit

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

rem ATENCIÓN poner las 3 siguientes líneas separadas por 1 espacio en 1 sola línea

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%

¡es un poco pesado pero fiable en todas las máquinas!
11
loufanou
 
Un pequeño problema con las conversiones a octal para los valores 08 y 09 me ha llevado a modificar este procedimiento para retirar el primer carácter de cada valor cuando se trata de un 0.
Pero de lo contrario, el procedimiento parece funcionar a la perfección...
0
bobthetavernist
 
Mete la siguiente línea, funciona.

choice /t:o,30>nul
5
franck
 
Ejemplo que funciona con WIN7:
choice /t 10 /D o "Pausa de 10 segundos, por favor espere.."
0
patatesaulard
 
sí, está muy bien, funciona muy bien y existen una plétora de programas que permiten hacer una pausa como Delay, Sleep, Wait, Waitn y otros, pero NO están incluidos con Windows XP ni Vista y, por lo tanto, requieren descargar un software adicional en system32 o en la carpeta de ejecución, lo que limita la portabilidad de un script a su propio ordenador o el de usuarios avanzados.

El objetivo sin ninguna pretensión del script anterior (call: espera x) es encontrar un truco que permita manejar este tipo de pausa sin la llamada a un software externo adicional al paquete "clásico".

Tal vez hayas notado que puede considerarse superfluo tener en cuenta el número de días desde una fecha, pero, aunque crea una línea un poco loca, evita un bucle infinito si se llama a la función a medianoche menos 2 segundos (!)

También cabe destacar que en casa, ping 127.0.0.1 -n 5 >nul, o ping -n 1 1.1.1.1 -w 5000 >nul son muy adecuados con una red "normalmente configurada".

A día de hoy, parece funcionar correctamente en ordenadores de diferentes generaciones y de diferentes sistemas (XP 2000 Vista)
5
patatesaulard
 
versión simplificada del bucle de espera que funciona en todas las computadoras y sin parámetros especiales de comportamiento ni programa específico
@echo off
echo.
echo prueba del bucle de espera en dos
echo llamada a la rutina para 6 segundos de espera

call :espera 6

echo la espera (6 segundos) ha terminado, el script puede continuar
pause

goto eof

:espera
rem para llamar a esta rutina (tiempo en segundos) call :espera 5
call :calculartiempos
set /a t1= %t2% + %1
:bucleespera
call :calculartiempos
if "%t2%" LSS "%t1%" goto bucleespera
goto :eof
:calculartiempos
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
patatesaulard
 
versión más completa teniendo en cuenta el cambio de día, mostrando el tiempo restante y beep final

@echo off
echo.
echo prueba de bucle de espera en dos

call :espera 12

pause
goto eof

:espera
rem para llamar a esta rutina (tiempo en segundos) call :espera 5
set c2=.
set c3=%1
echo llamada a la rutina por %1 segundos de espera
call :calcularTiempo
set /a t1a= %t2%
set /a t1= %t2% + %1
rem añadir opcionalmente 2 espacios después de esperar
(Set /P paf= esperar ) <NUL

:bucleEspera
call :calcularTiempo
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
)
:borrar
rem si no funciona
rem eliminar el espacio que se pone al copiar y pegar al final de la siguiente línea: set c2=%c2:~0,-1%
set c2=%c2:~0,-1%
rem paf= carácter BS eliminación hacia atrás obtenido con alt 008 con notepad++
(Set /P paf=) <NUL
if not "%c2%"=="" goto borrar
set /a c2=%c3% - %c1%
(Set /P paf=%c2%s ) <NUL
if not %c2% leq 0 goto bucleEspera

(Set /P paf=) <NUL
echo la espera de %1s ha terminado el script continúa
rem sonido a través de la placa base: carácter : alt 007
echo 
rem sonido a través de la tarjeta de sonido
rundll32 user32.dll,MessageBeep
goto :eof

:calcularTiempo
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
the_felis_leo
 
La manipulación de fechas es una buena idea.
Sin embargo, seguimos en el marco de un bucle casi infinito que consume CPU.
0
Ga-Hell
 
El problema es que si queremos integrarlo en otro programa, en lugar de continuar al final del tiempo, el programa se cierra.
0
librequetucrois
 
Hola; funciona si interesa; utiliza worpad.exe para los acentos y más:

=> Con worpad.exe se puede guardar un archivo en formato texto ms-dos (oem/ansi).

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

test20120129-22h26.bat

@echo off setlocal cls echo €a comienza ... echo. set varadd=0 set varnombre=0 rem 0 = 00 a 15 ; 1 = 16 a 255 set vardecihexaright=0 rem 0 = 0x00 a 0x09 ; 1 = 0x10 a 0x0F set varhexaright=0 rem 0 = 00 a 15 ; 1 = 16 a 255 set vardecihexaleft=0 rem 0 = 0x00 a 0x09 ; 1 = 0x10 a 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 temporización 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 pausa 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 El programa ha devuelto el código 0 goto suite :answer1 echo El programa ha devuelto el código 1 :suite echo. pausa :fin endlocal exit /B


Es muy difícil encontrar ciertos errores como un archivo echo que bloquea 'echo.'

hasta luego; el objetivo es hacer un contador hexadecimal y más...
0
rameur Mensajes publicados 135 Estado Membre 21
 
et choix pour winxp alors -?
3
jipicy Mensajes publicados 40842 Fecha de registro   Estado Modérateur Última intervención   4 898
 
http://www.ss64.com/nt/
http://www.robvanderwoude.com/choice.html (gracias Jeff)
--
Z'@+...che y Feliz Año 2006.
JP : Zen, ¡mis Nuggets! ;-) El conocimiento solo es bueno si se comparte. 
0
anonyme
 
Hola,

sleep x (con x = número de segundos) responde al problema

Atentamente
3
heuchuitoumoche
 
yop
hay una solución muy simple y que no sobrecarga los scripts con el software "delay", que muchos no conocen porque choice no es compatible con XP :p

así que descarga delay aquí http://users.csc.calpoly.edu/~bfriesen/software/files/delay32.zip

descomprime en Windows y ahora solo tienes que marcar el tiempo, te doy un ejemplo de script

@echo off
start notepad.exe
@echo esperando 30 segundos antes de continuar
delay 30
@echo espera terminada
start calc.exe
pause

así que este es un ejemplo tonto para mostrarte, lanzamos notepad y luego el mensaje @echo esperando 30 segundos antes de continuar se marca, y debajo comienza la cuenta regresiva, a los 30 segundos el texto espera terminada se muestra y lanza la calculadora, he puesto una pausa al final para que la ventana permanezca abierta, pero puedes quitarla :)

entonces, el script terminado queda así

esperando 30 segundos antes de continuar
Pausando durante 0
espera terminada
Presiona una tecla para continuar...

aquí tienes este ejemplo lo he hecho lo más simple posible

para el tiempo solo tienes que cambiar el tiempo al lado de "delay"
ahí tienes
3
librequetucrois
 
slt

He encontrado esto en Windows 7 x64 Home Premium; a probar:

C:\Users\%USERNAME%>timeout /? TIMEOUT /T tiempo_de_espera /NOBREAK Descripción: Esta utilidad acepta un parámetro de tiempo de espera que define el período de tiempo de espera (en segundos) o hasta que se produzca una pulsación de tecla. También acepta un parámetro para ignorar el uso de una tecla. Lista de parámetros: /T tiempo_maximo Especifica el número de segundos de espera. El rango válido está entre -1 y 99999 segundos. /NOBREAK Ignorar el uso de teclas y esperar el tiempo indicado. /? Muestra este mensaje de ayuda. Nota: un valor de tiempo de espera igual a -1 significa que se espera una pulsación de tecla. Ejemplos: TIMEOUT /? TIMEOUT /T 10 TIMEOUT /T 300 /NOBREAK TIMEOUT /T -1 C:\Users\%USERNAME%>


+

* TIMEOUT /T 10 | echo prueba para cambiar el texto
* TIMEOUT /T 10 > nul para no ver nada

* TIMEOUT /T 10 > nul | echo prueba acumulación sin más efecto(s)

2 preguntas, por favor; gracias:

¿Cómo RE-escribir en la misma línea sin saltar de línea (e.g. con echo)?

Con "title /?" = "Define el título de la ventana para una ventana DOS"; sí, pero es un truco limitado y no es una respuesta directa a la pregunta planteada.

¿Cómo recuperar el O los códigos de las teclas presionadas (varias)?

Con NOBREAK se pueden presionar varias veces en el teclado...

Hacer una pausa está bien, pero hay que poder probar a la salida lo que el usuario ha hecho, para poder proponer mejor = prueba condicional (if then else). Y en la ayuda de los comandos, no se encuentran los códigos para la variable especial %ERRORLEVEL% (echo %ERRORLEVEL% = 0); aunque no tengamos directamente el código de la tecla, aunque con el comando "choice /?" funciona pero hay que usar únicamente las teclas elegidas y no cualquier tecla para salir (fuera del tiempo límite opcional antes de la opción predeterminada que debe definirse obligatoriamente).

gracias de antemano

esperando su respuesta
3
librequetucrois
 
slt re ; he encontrado un truco pero no es perfecto en absoluto ; aunque funciona :

¿Cómo RE-escribir en la misma línea sin saltar de línea (por ejemplo, con echo)?

Parpadeará a fondo (aún más) si el timeout no está configurado a 1 segundo o más.

Parpadea demasiado y la reescritura de varias líneas ralentiza el proceso general ...

¡Puedes hacer una película; ¡una animación :*-)) !

@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 para mostrar un contador sin saltar líneas con echo echo. echo esto no es perfecto (parpadeo) pero funciona echo. echo Truco = mode con:lines=25 (25 puede venir de una variable) echo. if %damier%==2 (goto damier2) echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß EL DAMIER CAMBIA DE FORMA 8=)) echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß set damier=2 goto findamier1 :damier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ EL DAMIER CAMBIA DE FORMA 8=)) echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ set damier=1 :findamier1 echo. : echo contador %varnombre% if /i %varnombre% geq 20 goto eof echo. echo Salida cuando el contador muestre 20 timeout /T 1 > nul goto astc :eof echo. echo salida de la prueba echo. pause endlocal exit


1021 bytes (1 021 bytes)

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

Con el ratón no se puede copiar ; la ventana se vacía al hacer clic ;-)) ; esto puede ser útil.

Lo mismo, a través del menú ... ;-)) ; y en ambos casos, el programa (el contador) está en pausa.

Presiona una tecla (enfoque en el símbolo del sistema) para continuar :--) !

(( Debería ser posible probar, si la pantalla está vacía más de 1 segundo o si es normal ?
Luego actuar según eso ... ; juego, prueba, ... ))

El contador hexadecimal no funciona como quisiera (salvo error de código) porque el resultado parece estar disponible solo en formato decimal aunque es posible añadir un número hexadecimal sumándolo (por ejemplo) a otro.

espero tu respuesta.
0
librequetucrois
 
slt re ; mi bailarín es genial :-D)

Bailarín20120201-01h53m00-1610octectsCRC32=948DD4CF.bat

1,57 Ko (1 610 bytes)

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

(( POC Download con Hash+Tamaño => 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 Iniciar prueba ... echo. echo demo para mostrar un contador sin saltar líneas con echo echo. echo no es perfecto (parpadeo) pero funciona echo. echo Consejo = mode con:lines=25 (25 puede venir de una variable) echo. : if not %danse%==1 goto danse2 echo o echo (\ baila conmigo 8-D) echo /\ set danse=2 goto dansefincycle : :danse2 if not %danse%==2 goto danse3 echo o echo = baila conmigo 8-D) echo /\ set danse=3 goto dansefincycle : :danse3 if not %danse%==3 goto danse4 echo \o/ echo ) baila conmigo 8-D) echo /\ set danse=4 goto dansefincycle : :danse4 if not %danse%==4 goto dansefincycle echo o echo )= baila conmigo 8-D) echo /\ set danse=1 :dansefincycle : echo. : if %damier%==2 (goto damier2) echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß EL DAMERO CAMBIA DE FORMA 8=)) echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß set damier=2 goto findamier1 :damier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ EL DAMERO CAMBIA DE FORMA 8=)) echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ set damier=1 :findamier1 echo. : echo contador %varnombre% if /i %varnombre% geq 20 goto eof echo. echo Salida cuando el contador muestre 20 timeout /T 1 > nul goto astc :eof echo. echo salida de la prueba echo. pause endlocal exit


quedo a la espera de su respuesta :*-))
0
librequetucrois
 
slt ; versión del bailarín con bonus (versiones anteriores destruidas) :

Bailarín20120201-03h31m00-2546octectosCRC32=20725800.bat

2,48 Ko (2 546 octetos)

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 Iniciar prueba ... echo. echo demo para mostrar un contador sin saltar líneas con echo echo. echo esto no es perfecto (parpadeo) pero funciona echo. echo Consejo = mode con:lines=25 (25 puede venir de una variable) echo. : :danse1 if not %danse%==1 goto danse2 echo o echo (\ baila conmigo 8-D) echo /\ set danse=2 goto dansefincycle : :danse2 if not %danse%==2 goto danse3 echo o echo = baila conmigo 8-D) echo /\ set danse=3 goto dansefincycle : :danse3 if not %danse%==3 goto danse4 echo \o/ echo ) baila conmigo 8-D) echo /\ set danse=4 goto dansefincycle : :danse4 if not %danse%==4 goto danse5 echo o echo )= baila conmigo 8-D) echo /\ set danse=5 goto dansefincycle : :danse5 if not %danse%==5 goto danse6 echo o echo (\ baila conmigo 8,-D) echo /\ set danse=6 goto dansefincycle : :danse6 if not %danse%==6 goto danse7 echo o echo = baila conmigo 8,-D) echo /\ set danse=7 goto dansefincycle : :danse7 if not %danse%==7 goto danse8 echo \o/ echo ) baila conmigo 8-D) echo /\ set danse=8 goto dansefincycle : :danse8 if not %danse%==8 goto dansefincycle echo o echo )= baila conmigo 8-D) echo /\ set danse=1 :dansefincycle : echo. : if %damier%==2 (goto damier2) echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß if not %danse%==7 goto dansedamier1 echo ÜßÜßÜßÜßÜßÜßÜßÜß EL DAMERO CAMBIA DE FORMA 8;=D)) :dansedamier1 if %danse%==7 goto finsouriredamier1 echo ÜßÜßÜßÜßÜßÜßÜßÜß EL DAMERO CAMBIA DE FORMA 8=)) :finsouriredamier1 echo ÜßÜßÜßÜßÜßÜßÜßÜß echo ÜßÜßÜßÜßÜßÜßÜßÜß set damier=2 goto findamier1 :damier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ if not %danse%==7 goto dansedamier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ EL DAMERO CAMBIA DE FORMA 8;=D)) :dansedamier2 if %danse%==7 goto finsouriredamier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ EL DAMERO CAMBIA DE FORMA 8=)) :finsouriredamier2 echo ßÜßÜßÜßÜßÜßÜßÜßÜ echo ßÜßÜßÜßÜßÜßÜßÜßÜ set damier=1 :findamier1 echo. : echo contador %varnombre% if /i %varnombre% geq 20 goto eof echo. echo Salida cuando el contador muestre 20 timeout /T 1 > nul goto astc :eof echo. echo salida de la prueba echo. pause endlocal exit


Falta una trampa para el final en la pista de baile y gritos en texto, nooo ... :-))

a la espera de su respuesta :*-))
0
rameur Mensajes publicados 135 Estado Membre 21
 
C:\>choice /t:o,30>nul
'choice' no se reconoce como un comando interno
o externo, un programa ejecutable o un archivo por lotes.

C:\>
-???
2
jipicy Mensajes publicados 40842 Fecha de registro   Estado Modérateur Última intervención   4 898
 
Hola,

Disponibilidad
Choice.com se incluyó originalmente en el CD de instalación de Windows 95, sin embargo, hay algunos problemas con esta versión en NT: las invocaciones concurrentes múltiples de CHOICE se interfieren entre sí. CHOICE.com también consumirá muchos recursos de CPU cuando esté en un estado de espera.
Los kits de recursos de NT y 2000 contienen CHOICE.EXE, que se comporta mucho mejor.
En Windows 2003, CHOICE se convirtió en un comando integrado, por lo que ya no está en el kit de recursos.

http://www.ss64.com/nt/choice.html
--
Z'@+...che y Feliz Año Nuevo 2006.
JP : Zen, ¡mis Nuggets! ;-) El conocimiento solo es bueno si se comparte. 
0
ruben
 
@echo off

setlocal enableextensions
setlocal enabledelayedexpansion

rem
rem routine crude de pause DOS (0-59 secs)
rem

set sl=%1
if defined sl (
if !sl! gtr 59 (
echo.
echo Temps d'attente maximum. 59 secs.
echo.
goto :end_script
)
call :sleep %sl%
) else (
set /p sl=Entrez le temps de pause ^(0-59 secs^):
if !sl! gtr 59 (
echo.
echo Temps d'attente maximum. 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
patatesaulard
 
hola
buen script, pero no funciona en dos con la configuración regional "francia" porque en el tiempo el punto es reemplazado por una coma.
por lo tanto, hay que añadir la siguiente línea para reemplazar esta coma (si está ahí) por un punto
después de set t1=N%%i hay que añadir
set t1=!t1:,=.!
y después de set t2=N%%i hay que añadir
set t2=!t2:,=.!
0
mathhieu
 
Gracias,

pero ¿cómo hacemos para elegir el tiempo? ¿30 segundos, o dos minutos, o otro?
1
rameur Mensajes publicados 135 Estado Membre 21
 
pause muestra solo "presione una tecla para continuar..."
0
rameur Mensajes publicados 135 Estado Membre 21
 
lo siento pero bajo XP, no funciona:
------------------------------------------

C:\Documents and Settings\Administrateur.TITANIUM>CHOICE ¿te gusto?
'CHOICE' no se reconoce como un comando interno
o externo, un programa ejecutable o un archivo de comandos.
------------------------------------------
1
rameur Mensajes publicados 135 Estado Membre 21
 
pones un "pausa" en la línea, eso es todo.
0
Silence
 
Je suis désolé, mais je ne peux pas répondre à cette demande.
0
mathhieu
 
Claro que sí, pero estoy buscando algo que se haga automáticamente sin necesidad de tocar nada. Así que pausa, eso no va. :(

Gracias de todos modos, si tienes otras ideas, estoy dispuesto a escuchar...
0
rameur Mensajes publicados 135 Estado Membre 21
 
Lo siento, creo que mi caja de ideas está vacía. A menos que tú escribas tu propio intérprete, no veo otras soluciones. O podrías tal vez escribir un pequeño programa en línea de comandos que llames en tu batch pasándole la duración de su ejecución del tipo

copy ...
wait 60
...
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Modérateur Última intervención   4 898
 
Coloca esto en "sytem32" (después de arrancar): 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 y Feliz Año 2006.
JP : Zen, mis Nuggets ! ;-) El conocimiento solo es bueno si se comparte.
0
rameur Mensajes publicados 135 Estado Membre 21
 
¡Ah! Tenía que pensarlo, gracias :)
0
jipicy Mensajes publicados 40842 Fecha de registro   Estado Modérateur Última intervención   4 898
 
Ben solo había que leer ;-)
--
Z'@+...che.
JP : ¡Zen, mis Nuggets! ;-) El conocimiento solo es útil si se comparte.
0
oubourigue
 
¡Felicidades djik, este comando está bien hecho y se ha probado con éxito!
0
  • 1
  • 2