[batch] pausa fija

Iniciado por luiservv, 7 Septiembre 2010, 22:45 PM

0 Miembros y 1 Visitante están viendo este tema.

luiservv

Ola amigos soy nuevo en el foro   :) estuve leyendo los tutoriales y me surgio una duda ¿como hago para pausar mi batch por un tiempo fijo determinado? estuve viendo que se usa un truco con ping pero no me convencio, y estuve buscando y encontre un aplicacion timeout que ya viene con windows y te permite hacer la pausa asi

timeout 10 /nobreak

donde 10 son los segundos.

que opinan de este metodo lo podre usar sin problemas?

flony

timeout no parece un comando interno o sea que venga con windows....otra forma pero mas complicadita seria
****usar el comando time
****usar extraccion de caracteres y que sean variables
****sumar el tiempo que quieras

pero bue es la primera vez que escucho del timeout
si un problema no tiene solucion entonces no es un problema...es algo inevitable

Novlucker

Código (dos) [Seleccionar]
echo wscript.sleep 10000 > %temp%\pause.vbs
start /wait %temp%\pause.vbs


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

luiservv

Gracias por las ideas, flony lo de timeout lo tengo en mi windows 7 pero ya le encontre un problema, no se como hacer para que espere en milisegudos (osea menos de un segundo) :¬¬ lo de el vbs seria una solucion muy practica pero no me termina de convencer deberia de haber una solucion mas sencilla  :rolleyes: aunque solucionara lo de los milisegundos.

voy a probar hacer algo con el comando time  ;)

Por si estan interesados les dejo la ayuda del timeout

TIMEOUT [/T] tiempo_espera [/NOBREAK]

Descripción:
    Esta utilidad acepta un parámetro de tiempo de espera para esperar el
    un período de tiempo determinado (en segundos) o hasta que se presiona
    alguna tecla. También acepta un parámetro para omitir la presión de tecla.

Lista de parámetros:
    /T   tiempo_espera     Especifica el número de segundos que hay
                           que esperar.
                           El intervalo válido es de -1 a 99999 segundos.

    /NOBREAK               Omite las presiones de tecla y espera el tiempo
                           especificado.

    /?                     Muestra este mensaje de ayuda.

NOTA: un valor de tiempo de espera -1 significa esperar indefinidamente
una presión de teclado.

Ejemplos:
    TIMEOUT /?
    TIMEOUT /T 10
    TIMEOUT /T 300 /NOBREAK
    TIMEOUT /T -1


Gracias por las ideas otra vez


Aiouek

Buenas, milisegundos nose....pero aunque para apuros hazte un ping ati mismo  :laugh:
ping -n 10 127.0.0.1 > null
Donde 10 son los segundos.

Saludos

flony

a ver Aiouek el tema del ping...es una aproximacion a un segundo eso depende de otros factores no es exacto y no volvi a responder porque creo que a milisegundo no llegamos con bat...pero bue si haces un cronometro se entiende...ahora para hacer una pausa dejando que algo mas se ejecute o para volver a iniciar una accion no creo relevante hacer con milisegundos con una aproximacion a segundo alcanza y sobra
si un problema no tiene solucion entonces no es un problema...es algo inevitable

aaronduran2

#6

fary

Prueba con Sleep de VBS como te indico Novlucker.

salu2!
Un byte a la izquierda.

Komodo

Te recomiendo yo también el Sleep en un VBS, creado desde tu script.

PD: Gracias por enseñarnos lo de timeout, y yo creo que si te mola timeout deberias usarlo, eso si, solo sirve en W7 ;)


maxx93

Puedes usar el comando sleep.
Sleep Segundos
ej. sleep 5

Aca posteé un comando para reemplazar al ping y al sleep, se llama espera xD
http://foro.portalhacker.net/index.php/topic,117058.0.html

Código (dos) [Seleccionar]

@echo off
setlocal
if x%1x==xx (goto :ayuda)
set tiempo=%1
call:verif >nul 2>&1
goto:veriff
:verif
set /a ver=0x%tiempo%
goto:eof
:veriff
if %errorlevel% neq 0 (goto :ayuda)
set /a tiempoo=%tiempo%+1
call:code %tiempo% >nul 2>&1
endlocal
goto:eof

:code
set /a tiempoterm=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%+%tiempo%
set /a hs=%tiempoterm%/86399
set d=%date:~0,2%
:ini
set /a tiempoact=%time:~0,2%*3600+%time:~3,2%*60+%time:~6,2%
if %d% neq %date:~0,2% (
set /a tiempoterm=%hs%*-86399+%tiempoterm%
set d=%date:~0,2%
if %hs% leq 0 (set /a hs=%hs%-1))
if %tiempoterm% geq %tiempoact% (goto :ini)
goto:eof

:ayuda
echo Espera. Inserta una pausa de n segundos
echo Creado por maxx93
echo.
echo Sintaxis:
echo Espera Segundos
echo.
echo Ej.: Espera 777
goto:eof

Guardalo como espera.bat en %windir%. Luego lo podes usar como cualquier comando =)
Salu2.