[batch] programar tareas

Iniciado por imlikeabird34, 17 Diciembre 2012, 20:26 PM

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

imlikeabird34

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

@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

Eleкtro

Hola,

Cita de: imlikeabird34 en 17 Diciembre 2012, 20:26 PMme 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.
REG ADD HKCU \...
El espacio da error de sintaxis.

3.
/t REG_SZ
Es innecesario especificarlo, el valor REG_SZ se usa por defecto.

4.
Código (dos) [Seleccionar]
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.
if %m% == 2 & %a% == 2013
MAL, no es la sintaxis correcta y dará error.
Código (dos) [Seleccionar]
if "%m%"" == "2" if "%a%"" == "2013"

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

7.
Código (dos) [Seleccionar]
FOR /L %%x in (1,1,28) DO (
if %d% == %%x
...

Fallará, porque el més tiene 2 digitos como dije.

8.
Código (DOS) [Seleccionar]
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 (dos) [Seleccionar]
@echo off
REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v "check" /d "C:\prog_tarea.bat" /F

' Si el més es "02" y el año "2013" la tarea se agrega para la fecha actual.
IF "%date:~3%" EQU "02/2013" (
SCHTASKS /create /SD %DATE% /ST 00:00 /SC MINUTE /TN tarea /TR "C:\tarea.bat"
)


Saludos








imlikeabird34

#2
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

Eleкtro

#3
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








imlikeabird34

necesito aplicarlo para mes mayor a 01

Eleкtro

Cita de: imlikeabird34 en 17 Diciembre 2012, 22:54 PM
necesito aplicarlo para mes mayor a 01

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








imlikeabird34

mmm me la re complicaste jeje, gracias de todas formas.