Hacer una espera en un archivo por lotes (batch)

Resuelto
mathhieu -  
CharlesDelo Mensajes publicados 1 Estado Miembro -
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 respuestas

  • 1
  • 2
  1. 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
    1. 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
    2. PG51
       
      05 para 5 segundos
      -2
    3. darklight
       
      Muchas gracias porque gracias a ti he logrado, gracias de nuevo.
      0
    4. CharlesDelo Mensajes publicados 1 Estado Miembro 1
       
      Gracias, andykimpe. Timeout me basta y funciona bien por mi parte.
      1
  2. floxi Mensajes publicados 153 Estado Miembro 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
    1. Silence
       
      El tiempo de espera variará en función de la velocidad del procesador.
      0
  3. Jean-François Pillou Mensajes publicados 18961 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
  4. 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
    1. 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
  5. bobthetavernist
     
    Mete la siguiente línea, funciona.

    choice /t:o,30>nul
    5
    1. franck
       
      Ejemplo que funciona con WIN7:
      choice /t 10 /D o "Pausa de 10 segundos, por favor espere.."
      0
  6. 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
    1. 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
    2. 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
    3. 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
    4. 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
    5. 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
  7. anonyme
     
    Hola,

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

    Atentamente
    3
  8. 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
  9. 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
    1. 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
    2. 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
    3. 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
  10. rameur Mensajes publicados 135 Estado Miembro 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
    1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Ú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
  11. 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
    1. 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
  12. mathhieu
     
    Gracias,

    pero ¿cómo hacemos para elegir el tiempo? ¿30 segundos, o dos minutos, o otro?
    1
    1. rameur Mensajes publicados 135 Estado Miembro 21
       
      pause muestra solo "presione una tecla para continuar..."
      0
  13. rameur Mensajes publicados 135 Estado Miembro 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
  14. rameur Mensajes publicados 135 Estado Miembro 21
     
    pones un "pausa" en la línea, eso es todo.
    0
    1. Silence
       
      Je suis désolé, mais je ne peux pas répondre à cette demande.
      0
  15. 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
  16. rameur Mensajes publicados 135 Estado Miembro 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
  17. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Ú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
  18. rameur Mensajes publicados 135 Estado Miembro 21
     
    ¡Ah! Tenía que pensarlo, gracias :)
    0
    1. jipicy Mensajes publicados 40842 Fecha de registro   Estado Moderador Ú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
  19. oubourigue
     
    ¡Felicidades djik, este comando está bien hecho y se ha probado con éxito!
    0
  • 1
  • 2