CRON programador de tareas
Re: CRON programador de tareas
Hola Esgrimidor, dado que el autor no da señales de vida lo he subido a mi cuenta en Adrive:
http://www.adrive.com/public/a415913781 ... db706.html
He puesto dos versiones compiladas (en 32 y 64 bits), las fuentes y el arhivo crontab. Cualquier duda avisame.
Saludos
Pablo
http://www.adrive.com/public/a415913781 ... db706.html
He puesto dos versiones compiladas (en 32 y 64 bits), las fuentes y el arhivo crontab. Cualquier duda avisame.
Saludos
Pablo
- Esgrimidor
- Hacker del Foro
- Mensajes: 286
- Registrado: 19 Oct 2008, 00:59
- Ubicación: Santa Cruz de Tenerife
- Contactar:
Re: CRON programador de tareas
Gracias pablo
- Esgrimidor
- Hacker del Foro
- Mensajes: 286
- Registrado: 19 Oct 2008, 00:59
- Ubicación: Santa Cruz de Tenerife
- Contactar:
Re: CRON programador de tareas
Ya lo estoy solucionando, ¿sabes lo que paso? : compile la version original, la que posee la linea que mas arriba comento que no se que hace pero con ella no me anda. Ahora estoy revisando si pasa alguna otra cosa rara. Cuando este seguro lo subo de nuevo.
Si quieres ir probando ponle un punto y coma a la linea que dice "Opt("RunErrorsFatal", 0)"
Saludos
Pablo
Si quieres ir probando ponle un punto y coma a la linea que dice "Opt("RunErrorsFatal", 0)"
Saludos
Pablo
- Esgrimidor
- Hacker del Foro
- Mensajes: 286
- Registrado: 19 Oct 2008, 00:59
- Ubicación: Santa Cruz de Tenerife
- Contactar:
Re: CRON programador de tareas
Te espero mejor.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: CRON programador de tareas
Según creo recordar, leí que la opción RunErrorsFatal la quitaron, que estaba en versiones anteriores.
Asi que eliminarla, porque en estas versiones no existe.
Saludos .
Asi que eliminarla, porque en estas versiones no existe.
Saludos .
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: CRON programador de tareas
¿Para que servia esta opcion?, el programa anda bien sin ella asi que no se me ocurre que haria metida ahi.
Saludos
Pablo
Saludos
Pablo
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: CRON programador de tareas
Mejor que yo, te pondré lo que pone la ayuda traducida al español de la versión 3.0.102 del AutoIt:
Saludos.
Espero que te haya aclarado la duda. Pero olvidate de esto que ya no existe . Ahora habría que tratar el error con el resultado que daría la función Run/RunWait a la macro @error.Fija si el script terminaría con un error fatal si una función Run/RunWait falla debido a dirección errónea/archivo no encontrado/Mal entrada de IDs:
1 = Error fatal (por defecto)
0 = Error silencioso (@error es fijado a 1)
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: CRON programador de tareas
che alguien k tenga este script lo podra resubir si es tan amable :O xq no sirve ningun link del tiempo k lleva inactivo
Saludos
Saludos
Aunk no m Buskes, Seguro m enkontras!
Re: CRON programador de tareas
Hola, llevaba algun tiempo sin conectarme.
Te pongo los codigos corregidos (creo), no es problema compilarlo
y el fichero crontab que tiene ejemplos
Yo cuando lo usaba habia creado un acceso directo en menu de inicio, su consumo de recursos es muy acotado
Te pongo los codigos corregidos (creo), no es problema compilarlo
Código: Seleccionar todo
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=Cron 64 bits.exe
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_UseX64=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Juan Luis Rodríguez González
CRON 0.2.1.11
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
¿Qué es Cron?
-------------
Cron (el nombre es una reliquia UNIX) es un proceso que se inicia cuando
su máquina arranca y nunca se detiene hasta que se apaga. Durante su
existencia, comprueba los contenidos de cierto fichero cada minuto (puede
cambiar fácilmente la granularidad del tiempo, por ejemplo a 5 minutos). Si
encuentra que la hora y fecha actuales coinciden con una entrada en el
fichero, Cron inicia el proceso mencionado en el fichero.
Esto suena aburrido, pero en la práctica, Cron es la herramienta más útil de
planificar tareas repetitivas que he encontrado nunca.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
El fichero CRONTAB.TXT
m h d m s comando [|| parametros]
m = minutos 0 a 59
h = horas 0 a 59
d = dia del mes 1 a 31
m = nº de mes 1 a 12
s = nº semana 1 = Lunes 7y0= Domingo
comando = lo que quieras que se ejecute
parametros
$minuto $hora $dia_mes $mes $dia_semana Comando [|| parametros]
Hay dos comodines:
* significa que se cumple siempre
I que se cumple cuando coincide con la ejecución de CRON
/ indica el incremento (solo se puede usar una vez por linea)
Añadido comandos internos
:kill <proceso> cierra el proceso ej: :kill iexplore.exe cierra el intene explores
:off Apaga el ordenador
:exit cierra cron
:reboot reinicia el ordenador
:beep <frecuencia> <duración en milesimas de segundo> ej: :beep 500 1000
:play <nombre de archivo de sonido> ej: :play c:\windows\media\tada.wav
() titulo () texto ;mensaje emerjente ej: () Alerta () Este es un mensaje de prueva||Esta es otra linea
Añadigo multiples, rango y balor de incremento
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
opciones aun no soportadas
coma para valore multibles ej: 1,2 * * * * comando
y guión para rangos ej: 2-5 * * * * comando
añadir más comandos internos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ce
;Opt("RunErrorsFatal", 0)
;--------- Archivo de registro ------------
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, "")
FileWriteLine($fileReg, "Comienzo de Cron ( " & @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " )")
FileWriteLine($fileReg, "-------------------------------------------")
FileClose($fileReg)
;----------------------------------------
$segundos = 0
$y = 0
Dim $subcom[6]
$subcom[0] = 0
$subcom[1] = 0
$subcom[2] = 0
$subcom[3] = 0
$subcom[4] = 0
$subcom[5] = 0
;--------- Variables para el comodin (I)------------
$Iminutos = Number(@MIN)
$Ihoras = Number(@HOUR)
$Imes = Number(@MON)
$Idia_mes = Number(@MDAY)
$Idia_semana = Number(@WDAY) - 1
;--------------------------------------------------
;--------- Bucle principal de la aplicación-------------
While 1
Dim $par[6]
$minutos = Number(@MIN)
$par[1] = Number(@MIN)
$horas = Number(@HOUR)
$par[2] = Number(@HOUR)
$mes = Number(@MON)
$par[3] = Number(@MON)
$dia_mes = Number(@MDAY)
$par[4] = Number(@MDAY)
$dia_semana = Number(@WDAY) - 1
$par[5] = Number(@WDAY)
$espera = 60000
abrir() ; abrir y ejecutar fichero CRONTAB.TXT
;------------- reaguste de tiempos ------------
$segundos = (@SEC) * 1000
;If 0 < @SEC Then
; $segundos = (@SEC) * 1000
;EndIf
$espera = $espera - $segundos
;----------------------------------------------
Sleep($espera); pausa 60 segundos 1 minuto
WEnd
;--------- abrir y ejecutar fichero CRONTAB -----------
Func abrir()
$file = FileOpen(".CRONTAB", 0);Lo intenta con la extensión CRONTAB
; Revisa si el archivo está listo para abrir
If $file = -1 Then
$file = FileOpen("CRONTAB", 0);Lo intenta sin la extensión TXT
If $file = -1 Then
$file = FileOpen("CRONTAB.txt", 0);Lo intenta con la extensión TXT
If $file = -1 Then
MsgBox(0, "Error", "Archivo CRONTAB no se pudo abrir.")
Exit; Sale de la aplicación
EndIf
EndIf
EndIf
; Lee líneas de texto hasta que aparece EOF (End Of File= Fin de Archivo)
While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$primero = StringMid($line, 1, 1);saca el primer caracter para comprobar comentarios
;compara el primer carancter si es un numero o comodin pasa a FunRum
If StringIsDigit($primero) Or StringInStr($primero, "*") Or StringInStr($primero, "I") Or StringInStr($primero, "i") = 1 Then
FunRum($line)
EndIf
WEnd
$subcom[0] = 0
FileClose($file)
EndFunc ;==>abrir
Func FunRum($line)
$line = StringStripWS($line, 4);Reduce espacios
;divide linea $parametros[1]=$minuto $parametros[2]=$hora $parametros[3]=$dia_mes $parametros[4]=$mes $parametros[5]=$dia_semana $parametros[6..]=comando
$parametros = StringSplit($line, " ")
;---------- Proceso del comodin (I) -----------------
If $parametros[1] = "I" Or $parametros[1] = "i" Then
$parametros[1] = $Iminutos
EndIf
If $parametros[2] = "I" Or $parametros[2] = "i" Then
$parametros[2] = $Ihoras
EndIf
If $parametros[3] = "I" Or $parametros[3] = "i" Then
$parametros[3] = $Idia_mes
EndIf
If $parametros[4] = "I" Or $parametros[4] = "i" Then
$parametros[4] = $Imes
EndIf
If $parametros[5] = "I" Or $parametros[5] = "i" Then
$parametros[5] = $Idia_semana
EndIf
If Number($parametros[5]) = 0 And StringMid($parametros[5], 1, 1) <> "*" Then
$parametros[5] = 7
EndIf
If $dia_semana = 0 Then
$dia_semana = 7
EndIf
If $par[5] = 0 Then
$par[5] = 7
EndIf
;---------------------------------------------------
Dim $multiples[6]
Dim $rango[6]
$subcom[0] = 0
$subcom[1] = 0
$subcom[2] = 0
$subcom[3] = 0
$subcom[4] = 0
$subcom[5] = 0
For $p = 1 To 5
If StringInStr($parametros[$p], ",") Then
;multiples
$mul = StringSplit($parametros[$p], ",")
For $p2 = 1 To $mul[0]
;
If Number($mul[$p2]) = $par[$p] Then
$multiples[$p] = 1
EndIf
Next
Else
If StringInStr($parametros[$p], "-") Then
;rango
$ran = StringSplit($parametros[$p], "-")
If Number($ran[1]) >= $par[$p] And Number($ran[2]) <= $par[$p] Then
$rango[$p] = 1
EndIf
EndIf
EndIf
;---------------------- Incremento -----------------------
If StringInStr($parametros[$p], "/") > 0 Then ;1
$ss = StringSplit($parametros[$p], "/")
If $minutos = 0 Then
$minutos = 60
EndIf
If $par[1] = 0 Then
$par[1] = 60
EndIf
If Number($horas) = 0 Then
$horas = 24
EndIf
If $par[2] = 0 Then
$par[1] = 24
EndIf
If Mod($par[$p], Number($ss[2])) = 0 Then
$subcom[$p] = 0
Else
$subcom[$p] = 1
EndIf
If $minutos = 60 Then
$minutos = 0
EndIf
If $par[1] = 60 Then
$par[1] = 0
EndIf
If $horas = 24 Then
$horas = 0
EndIf
If $par[2] = 24 Then
$par[2] = 0
EndIf
Else
$subcom[$p] = 0
EndIf
;----------------------------------------------------------
;---------------------------------------------------------
Next
;---------- Comprobaciones -------------------------
If (Number($parametros[1]) = $minutos Or StringMid($parametros[1], 1, 1) = "*" Or $multiples[1] Or $rango[1]) And $subcom[1] = 0 Then
If (Number($parametros[2]) = $horas Or StringMid($parametros[2], 1, 1) = "*" Or $multiples[2] Or $rango[2]) And $subcom[2] = 0 Then
If (Number($parametros[3]) = $dia_mes Or StringMid($parametros[3], 1, 1) = "*" Or $multiples[3] Or $rango[3]) And $subcom[3] = 0 Then
If (Number($parametros[4]) = $mes Or StringMid($parametros[4], 1, 1) = "*" Or $multiples[4] Or $rango[4]) And $subcom[4] = 0 Then
If (Number($parametros[5]) = $dia_semana Or StringMid($parametros[5], 1, 1) = "*" Or $multiples[5] Or $rango[5]) And $subcom[5] = 0 Then
;ejecuta la expresión
correcto($parametros)
EndIf
EndIf
EndIf
EndIf
EndIf
$multiples = 0
$rango = 0
EndFunc ;==>FunRum
;----------------- todo correcto -----------------
Func correcto($parametros)
;------------------------------------------------
;- :kill <aplicación>
;- :off Apaga el ordenador
;- :exit cierra cron
;- :reboot reinicia el ordenador
;- ()titulo()texto ;mensaje emerjente
;------------------------------------------------
$parametros[6] = StringUpper($parametros[6])
Select
Case $parametros[6] = "()"
comando_interno($parametros)
Case $parametros[6] = ":kill"
$comando = $parametros[7]
$x = 8
While $x < UBound($parametros)
$comando = $comando & " " & $parametros[$x]
$x = $x + 1
WEnd
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | kill | " & $comando)
FileClose($fileReg)
While ProcessExists($comando)
;
ProcessClose($comando);------------------ cierra $comando
WEnd
Case $parametros[6] = ":off"
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | off")
FileClose($fileReg)
Shutdown(13);---------------- cierra y apaga
Case $parametros[6] = ":reboot"
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | reboot")
FileClose($fileReg)
Shutdown(6);------------------ reinicia
Case $parametros[6] = ":exit"
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | Exit")
FileClose($fileReg)
While ProcessExists(@ScriptName)
;--------------------------- Cierra procesos CRON
ProcessClose(@ScriptName)
WEnd
Case $parametros[6] = ":beep"
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | beep " & $parametros[7] & " " & $parametros[8])
FileClose($fileReg)
Beep($parametros[7], $parametros[8])
Case $parametros[6] = ":play"
$comando = $parametros[7]
$x = 8
While $x < UBound($parametros)
$comando = $comando & " " & $parametros[$x]
$x = $x + 1
WEnd
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | play | " & $comando)
FileClose($fileReg)
SoundPlay($comando)
Case Else
;
Local $comando[2]
$comando = unir_comando($parametros)
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | " & $comando[0] & " " & $comando[1])
FileClose($fileReg)
ShellExecute($comando[0], $comando[1]);---------- ejecuta parametros
EndSelect
EndFunc ;==>correcto
;------------- Une el resto de parametros de comando --------------
Func unir_comando($parametros)
;
Local $comando[2]
$comando[1] = " "
$xy = 0
$comando[$xy] = $parametros[6]
$x = 7
While $x < UBound($parametros)
If $parametros[$x] = "||" Then
$xy = 1
Else
$comando[$xy] = $comando[$xy] & " " & $parametros[$x]
EndIf
$x = $x + 1
WEnd
Return $comando
EndFunc ;==>unir_comando
Func comando_interno($parametros)
;
$titulo = $parametros[7]
$comodin = "no"
$x = 8
While $x < UBound($parametros)
If $comodin = "si" Then
$comando = $comando & " " & $parametros[$x]
Else
If $parametros[$x] <> "()" Then
$titulo = $titulo & " " & $parametros[$x]
EndIf
EndIf
If $parametros[$x] = "()" Then
$x = $x + 1
$comando = $parametros[$x]
$comodin = "si"
EndIf
$x = $x + 1
WEnd
$fileReg = FileOpen("reg.log", 1)
If $fileReg = -1 Then
MsgBox(0, "Error", "No se puede abrir archivo.")
EndIf
FileWriteLine($fileReg, @HOUR & ":" & @MIN & " " & @MDAY & " de " & @MON & " de " & @YEAR & " | " & $titulo & " |" & $comando)
FileClose($fileReg)
$comando = StringReplace($comando, "||", @CRLF)
MsgBox(0, $titulo, $comando, 15)
EndFunc ;==>comando_interno
Código: Seleccionar todo
########################~ CRON 0,2,1,9 ~#################################################
#
# ------------- minutos (0 - 59)
# | ----------- horas (0 - 23)
# | | --------- dia del mes (1 - 31)
# | | | ------- mes (1 - 12)
# | | | | ----- dia de la semana (0 - 7) (domingo=0, lunes=1, ... sabado=6,domingo=7)
# | | | | |
# * * * * * comando a ejecutar
#
#
# i significa todos los valores validos si cinciden con la ejecución del CROM
# * significa todos los valores validos
# / permite definir una repeticion
# - permite definir un rango
# , permite definir varios valores
#
# Comandos internos
# ~~~~~~~~~~~~~~~~~~~~
# :kill <proceso> cierra el proceso ej: :kill iexplore.exe cierra el intene explores
# :off Apaga el ordenador
# :exit cierra cron
# :reboot reinicia el ordenador
# :beep <frecuencia> <duración> ej: :beep 500 1000
# :play <nombre> ej: :play c:\windows\media\tada.wav
# () <titulo> () <texto> mensaje emerjente ej: () Alerta () Este es un mensaje de prueva||Esta es otra linea
#
# Como se puede obserbar hay algunas mejoras sobre el programa de crom orijinal
#
########################################################################################
# Esto es un comentario
# hora minutos diasdelmes mes de
#
# Se ejecuta cada minuto
#* * * * * Comando
# se ejecuta cada minuto a las 6 de la tarde
#* 18 * * * comando
# Se ejecuta Los Lunes cada minuto
#* * * * 1 comando
# Mensaje emerjete
#* * * * * () Titulo () Mensaje||Otra linea
#abre el fichero reg.log al iniciar el cron
i i i i i reg.log
#abre el fichero reg.log al iniciar el cron solo si el dia es laborable
i i i i 1-5 reg.log
#Cierra el bloc de notas a la hora de ejecutar el cron
#i * * * * :kill notepad.exe
#Apaga el equipo los lunes, martes, miercoles jueves y viernes a la 20:00 horas
# los sabados y domingos a las 22:30
#0 20 * * 1 :off
#0 20 * * 2 :off
#0 20 * * 3 :off
#0 20 * * 4 :off
#0 20 * * 5 :off
#30 22 * * 6 :off
#30 22 * * 0 :off
#esto hace lo mismo que lo anterior
#0 20 * * 1-5 :off
#30 22 * * 6,7 :off
#Ejecuta CCleaner con el parametro /auto los domingos a las 12:00 de la noche(00:00)
# ten encuenta que son necesarios los espacios en "||" para indicar los parametros
#0 0 * * 7 "C:\Archivos de programa\CCleaner\ccleaner.exe" || /auto
#apaga a las 10:25
#25 22 * * * :off
59 5 * * * () salir () Apagar el ordenador||dentro de 1 minuto a las 6:00
0 6 * * * :off ;Apagar el ordenador a las 6:00
#sonido a 500 hz durante 1 segundo
* * * * * :beep 500 1000
#suena el fichero c:\windows\media\tada.wav cada 15 minutos osea alas 0 15 30 45
#*/15 * * * * :play c:\windows\media\tada.wav