[CONSULTA] ayuda con archivo .BAT

Iniciado por VladimirKux, 14 Junio 2016, 03:19 AM

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

VladimirKux

Buen dias amigos, Ire al grano mi duda es la siguiente

Necesito cerrar un proceso de windows Mediante al comando TASKKILL pero necesito agregarle un timer a tal comando

Ejemplo: " Son las 12:am Y quiero que el proceso Ignite.exe se cierre a las 2:am "

Tambien quiero saber como ponerle un timer al comando (START)

Ejemplo: " Son las 3 am y quiero que el proceso Flash.exe se abra y se ejecute a las 4 am"

Tambien quiero saber si no hay ningun inconveniente en ejecutar varias ordenes o archivos bats a la vez..

Ejemplo: Voy a crear 2 archivos .bats uno para que me cierre los programas y otro para que me los abra, segun en el orden que yo ejecute estos archivos ellos se ejecutaran?

De antemano muchas gracias saludos...!!!
"Gastamos dinero que no tenemos, en cosas que no necesitamos, para impresionar a gente a la que no le importamos"

#willsmith

DarK_FirefoX

Puedes insertar:

timeout /t 3600

Antes de tu comando (tanto taskkill como start). Esto detendrá el batch por 3600 segundos (obvio que puedes sustituirlo) que son 60 minutos.

Salu2s, espero que te haya sido de ayuda.

VladimirKux

#2
Cita de: DarK_FirefoX en 14 Junio 2016, 03:27 AM
Puedes insertar:

timeout /t 3600

Antes de tu comando (tanto taskkill como start). Esto detendrá el batch por 3600 segundos (obvio que puedes sustituirlo) que son 60 minutos.

Salu2s, espero que te haya sido de ayuda.



Exelente amigo me sirvio de mucho gracias, a hora hay algun metodo para que no se quede el archivo abierto esperando el tiempo? por que me dice

Ejemplo:  " Esperando 10 segundos, precione una tecla para continuar"

Solo quiero que ejecute la orden y cuando llege el tiempo que se cierre :)

Ejecute TIMEOUT /? y me salio un comando que se llama "NOBREAK" pero no cumplio la funcion que esperaba :(
"Gastamos dinero que no tenemos, en cosas que no necesitamos, para impresionar a gente a la que no le importamos"

#willsmith

DarK_FirefoX

Cita de: VladimirKux en 14 Junio 2016, 03:53 AM
Ejecute TIMEOUT /? y me salio un comando que se llama "NOBREAK" pero no cumplio la funcion que esperaba :(

¿Cuál es en sí la función que esperabas?


VladimirKux

Cita de: DarK_FirefoX en 14 Junio 2016, 04:06 AM
¿Cuál es en sí la función que esperabas?




Le agrege la opcion NOBREAK y me sigue mostrando el tiempo en pantalla
"Gastamos dinero que no tenemos, en cosas que no necesitamos, para impresionar a gente a la que no le importamos"

#willsmith

DarK_FirefoX

Cita de: VladimirKux en 14 Junio 2016, 16:31 PM

Le agrege la opcion NOBREAK y me sigue mostrando el tiempo en pantalla

Lo puedes hacer con esto:

timeout /t 10 /nobreak>nul

Dime si te funciona, lo que hace es redirigir la salida estándar (a través de un pipe) a "nul"

Dime si eso es lo que quieres!

Salu2s

VladimirKux

Cita de: DarK_FirefoX en 14 Junio 2016, 17:13 PM
Lo puedes hacer con esto:

timeout /t 10 /nobreak>nul

Dime si te funciona, lo que hace es redirigir la salida estándar (a través de un pipe) a "nul"

Dime si eso es lo que quieres!

Salu2s


Exelente amigo muchas gracias por vuestra ayuda, eso es exactamente lo que queria que no mostrara nada en pantalla.. a hora abra alguna forma de que ejecute la orden y se cierre de una vez ?
"Gastamos dinero que no tenemos, en cosas que no necesitamos, para impresionar a gente a la que no le importamos"

#willsmith

Eleкtro

#7
Cita de: VladimirKux en 14 Junio 2016, 03:53 AMSolo quiero que ejecute la orden y cuando llege el tiempo que se cierre :)

Esto no va así, el comando TaskKill no expone ningún parámetro para poder especificar un tiempo de retraso o delay.

Debes hacer lo contrario, primero esperar, y cuando llegue el momento adecuado, ejecutar la orden. Puedes hacerlo con un búcle "infinito", de la siguiente manera:

Código (dos) [Seleccionar]
@Echo Off & SetLocal EnableDelayedExpansion
Title TaskKill with countdown

Set "ProcessName=Notepad"
Set "TargetTime=02:00" :: 2 AM.

For /L %%# In (0, 1, 99999999999) Do (
   Set /A "CurrentHour=!TIME:~0,2!"
   Set /A "CurrentMins=!TIME:~3,2!"
   Set /A "TargetHour=%TargetTime:~0,2%"
   Set /A "TargetMins=%TargetTime:~3,2%"

   If !CurrentHour! EQU !TargetHour! If !CurrentMins! EQU !TargetMins! (
       Call :KillProcess "%ProcessName%"
   )

   (TimeOut /T 10 /NoBreak)1>NUL
)

:KillProcess :: %1=ProcessName
(TakKill.exe /F /T /IM "%~1")2>NUL && (
   Echo Process "%~1" killed successfully.
) || (
    Echo Failed to kill process: "%~1".
)
GoTo :End

:End
Pause&Exit /B 0


Saludos.








DarK_FirefoX

Cita de: Eleкtro en 15 Junio 2016, 00:43 AM
Esto no va así, el comando TaskKill no expone ningún parámetro para poder especificar un tiempo de retraso o delay.

Debes hacer lo contrario, primero esperar, y cuando llegue el momento adecuado, ejecutar la orden. Puedes hacerlo con un búcle "infinito", de la siguiente manera:

Código (dos) [Seleccionar]
@Echo Off & SetLocal EnableDelayedExpansion
Title TaskKill with countdown

Set "ProcessName=Notepad"
Set "TargetTime=02:00" :: 2 AM.

For /L %%# In (0, 1, 99999999999) Do (
   Set /A "CurrentHour=!TIME:~0,2!"
   Set /A "CurrentMins=!TIME:~3,2!"
   Set /A "TargetHour=%TargetTime:~0,2%"
   Set /A "TargetMins=%TargetTime:~3,2%"

   If !CurrentHour! EQU !TargetHour! If !CurrentMins! EQU !TargetMins! (
       Call :KillProcess "%ProcessName%"
   )

   (TimeOut /T 10 /NoBreak)1>NUL
)

:KillProcess :: %1=ProcessName
(TakKill.exe /F /T /IM "%~1")2>NUL && (
   Echo Process "%~1" killed successfully.
) || (
    Echo Failed to kill process: "%~1".
)
GoTo :End

:End
Pause&Exit /B 0


Saludos.

Excelente! Que grande! +1

Saludos