Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: imlikeabird34 en 17 Diciembre 2012, 20:26 pm



Título: [batch] programar tareas
Publicado por: imlikeabird34 en 17 Diciembre 2012, 20:26 pm
Hola, necesito programar una tarea pero he leido que si el usuario no prende la pc ese dia la tarea no se ejecuta el dia siguiente.
Buscando en internet decidi armar mi propio script y me gustaria que me dijeran q tengo mal.
La idea es ejecutar la tarea cualquier dia de febrero del año q viene:

prog_tarea.bat
 
Código:
@echo off
REG ADD HKCU \Software\Microsoft\Windows\CurrentVersion\Run /v check /t REG_SZ /d "C:\prog_tarea.bat"
set /a d=%date:~0,2%,m=%date:~3,-5%,a=%date:~-4%
Set "Fecha=%d%/%m%/%a%"

if %m% == 2 & %a% == 2013

FOR /L %%x in (1,1,28) DO if %d% == %%x (SCHTASKS /create /SD %Fecha% /ST 00:00 /SC MINUTE /TN tarea /TR C:\tarea.bat)


Gracias de antemano

edito:no se si el tema esta bien posteado soy nuevo en la comu , cualquier cosa lo arreglo


Título: Re: [batch] programar tareas
Publicado por: Eleкtro en 17 Diciembre 2012, 21:11 pm
Hola,

me gustaria que me dijeran q tengo mal.

1. Posteaste en la sección incorrecta, los problemas de Batch van a la sección "Scripting".

2.
Código:
REG ADD HKCU \...
El espacio da error de sintaxis.

3.
Código:
 /t REG_SZ
Es innecesario especificarlo, el valor REG_SZ se usa por defecto.

4.
Código
  1. Set "Fecha=%D%/%M%/%A%"
Estás seteando una variable innecesaria, la variable DATE tiene exactamente el mismo formato que le estás dando a "fecha".

5.
Código:
 if %m% == 2 & %a% == 2013 
MAL, no es la sintaxis correcta y dará error.
Código
  1. if "%m%"" == "2" if "%a%"" == "2013"

6.
Código:
if %m% == 2 
El més no puede ser "2", será "02", dos digitos.

7.
Código
  1. FOR /L %%x in (1,1,28) DO (
  2. if %d% == %%x
  3. ...
Fallará, porque el més tiene 2 digitos como dije.

8.
Código
  1. if %d% == %%x (SCHTASKS /create /SD %FECHA% /ST 00:00 /SC MINUTE /TN tarea /TR C:\tarea.bat)
No entiendo el concepto de lo que intentas hacer con el FOR, primero compruebas si el día equivale a la variable del For, pero la taréa siempre se generará para el dia actual (%FECHA%),
entonces, si la taréa la generas para el día actual siempre, ¿Entonces para que necesitas el FOR y porque intentas comprobar si el día coincide con la variable del FOR?.



No se adapta esto mejor a lo que intentas hacer? como ya digo no me ha quedaod muy claro...

Código
  1. @echo off
  2. REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "check" /d "C:\prog_tarea.bat" /F
  3.  
  4. ' Si el més es "02" y el año "2013" la tarea se agrega para la fecha actual.
  5. IF "%date:~3%" EQU "02/2013" (
  6. SCHTASKS /create /SD %DATE% /ST 00:00 /SC MINUTE /TN tarea /TR "C:\tarea.bat"
  7. )

Saludos


Título: Re: [batch] programar tareas
Publicado por: imlikeabird34 en 17 Diciembre 2012, 21:37 pm
gracias por tu pronta respuesta , electro hacker, me di cuenta q el for esta de mas , solo necesito comprobar mes y año, podrias explicarme el if y la funcion equ ,con eso tendria resuelto mi problema
PD: movi el tema a scripting


Título: Re: [batch] programar tareas
Publicado por: Eleкtro en 17 Diciembre 2012, 22:51 pm
No has movido el post, lo has duplicado :xD (Y lo he eliminado), deja que el pequeño LittleHorse se encargue de moverlo.

"EQU" es exactamente lo mismo que "=="

Y en el IF elimino los primeros tres caracteres de la variable %DATE%, osea sólamente compruebo los últimos 7 caracteres de la variable %DATE%

Ejemplo:

Variable %Date% normal: 17/12/2012
Variable %Date% cortada:   12/2012


saludos


Título: Re: [batch] programar tareas
Publicado por: imlikeabird34 en 17 Diciembre 2012, 22:54 pm
necesito aplicarlo para mes mayor a 01


Título: Re: [batch] programar tareas
Publicado por: Eleкtro en 17 Diciembre 2012, 22:57 pm
necesito aplicarlo para mes mayor a 01

Código
  1. Echo %date:~3% | FINDSTR "[0-1][2-9]/2013" >NUL && (
  2.      SCHTASKS ...
  3. )


Título: Re: [batch] programar tareas
Publicado por: imlikeabird34 en 17 Diciembre 2012, 23:03 pm
mmm me la re complicaste jeje, gracias de todas formas.