Hacer una espera en un archivo por lotes (batch)
Resuelto
mathhieu
-
CharlesDelo Mensajes publicados 1 Estado Membre -
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
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
Suivant
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:
esto también funciona, si quieres más información mira Publicidad eliminada Moderación CCM
Flox
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
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<<
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<<
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!
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!
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)
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)
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
@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
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
@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
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
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...
=> 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...
http://www.ss64.com/nt/
http://www.robvanderwoude.com/choice.html (gracias Jeff)
--
Z'@+...che y Feliz Año 2006.
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.
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
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
slt
He encontrado esto en Windows 7 x64 Home Premium; a probar:
+
* 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
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
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 :*-)) !
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.
¿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.
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 ))
quedo a la espera de su respuesta :*-))
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 :*-))
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
Falta una trampa para el final en la pista de baile y gritos en texto, nooo ... :-))
a la espera de su respuesta :*-))
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 :*-))
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:\>
-???
'choice' no se reconoce como un comando interno
o externo, un programa ejecutable o un archivo por lotes.
C:\>
-???
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.
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.
@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
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
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:,=.!
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:,=.!
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.
------------------------------------------
------------------------------------------
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.
------------------------------------------
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...
Gracias de todos modos, si tienes otras ideas, estoy dispuesto a escuchar...
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
...
copy ...
wait 60
...
Coloca esto en "sytem32" (después de arrancar): http://eyn.free.fr/CHOICE.ZIP
--
Z'@+...che y Feliz Año 2006.
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.
- 1
- 2
Suivant
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