[BATCH] problema con código (solucionado)

Iniciado por corax, 26 Octubre 2009, 20:52 PM

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

corax

No, lo siento... el código me da el mismo error que los otros.

Y lo del registro... ya lo había pensado, pero es lo que dices, es mejor no tocarlo. No quiero ir llenando el registro de los ordenadores de ramas inútiles, ni arriesgarme a cambiar algo que no deba cambiar.
Y también es verdad lo de los permisos, ni se me había ocurrido.

En fin... me parece que el proyecto se va a quedar en eso, sólo un proyecto, durante un tiempecillo más, porque no sé cómo arreglarlo  :-\
Nuestro idioma ha tardado 12 siglos en llegar hasta hoy día. Tú tan sólo tardas 20 segundos en escribir un post: no destroces en tan poco tiempo lo que tantos siglos ha costado crear.

Shinseiki86

#11
Ok, estoy haciendole pruebas nuevamente y le he encontrado errores...  :-[

1. La variable varmes se define asi:

... set /a varmes=%date2:~3,2%-%tmp:~3,2%

El problema es que si el archivo es de sept y lo verificas ahora en octubre, te sale error ya que set /a varmes=10-09.

Yo hago lo siguiente en esos casos:
   if %date:~-7,1% EQU 0 (set /a mes_act=%date:~-6,1%) else (set /a mes_act=%date:~-7,2%)
   if %date:~-10,1% EQU 0 (set /a dia_act=%date:~-9,1%) else (set /a dia_act=%date:~-10,2%)

Prueba con lo siguiente y nos comentas como te va.


@echo off
:recordador1
If not exist "%homedrive%\marca.txt" (
echo. >C:\marca.txt
goto recordador2
) else (
call:datos C:\marca.txt
goto:eof
)

:datos
:: Fecha actual
set anno_act=%date:~6,4%
if %date:~-7,1% EQU 0 (set /a mes_act=%date:~-6,1%) else (set /a mes_act=%date:~-7,2%)
if %date:~-10,1% EQU 0 (set /a dia_act=%date:~-9,1%) else (set /a dia_act=%date:~-10,2%)

::Fecha archivo
set tmp=%~t1
set anno_arch=%tmp:~6,4%
if %tmp:~3,1% EQU 0 (set /a mes_arch=%tmp:~4,1%) else (set /a mes_arch=%tmp:~3,2%)
if %tmp:~0,1% EQU 0 (set /a dia_arch=%tmp:~1,1%) else (set /a dia_arch=%tmp:~0,2%)


set /a dif_anno=%anno_act%-%anno_arch%

If %dif_anno% EQU 0 set /a difer_mes=%mes_act%-%mes_arch%
If %dif_anno% EQU 1 set /a difer_mes=(%mes_act%+12)-%mes_arch%
If %dif_anno% GEQ 2 (goto tiempo1)
If %difer_mes% EQU 0 set /a difer_dia=%dia_act%-%dia_arch%
If %difer_mes% EQU 1 set /a difer_dia=(%dia_act%+30)-%dia_arch%
If %difer_mes% GEQ 2 (goto tiempo1)
If %difer_dia% LSS 20 (goto recordador2) else (goto tiempo1)
goto:eof

:tiempo1
echo   Ya han pasado 22 o m s d¡as.
echo   Por favor, haga un backup de las bases de datos.
del /q /f "C:\marca.txt"
echo. >C:\marca.txt
goto recordador2

:recordador2
echo estamos en recordador2
pause>nul
goto:eof

corax

Así que era eso... y yo convencido de que era un error del :call porque no estoy acostumbrado a usarlo... debería haberle hecho más pruebas al code de comprobación de la fecha.

Acabo de probar tu código y va genial, muchas gracias  ;D
Además de usarlo en el programa le echaré un buen rato a estudiarlo, tiene muy buena pinta.

Otra vez, gracias por tu tiempo, si no llega a ser por ti no me habría dado cuenta de lo del 09.

Un saludo!  :P
Nuestro idioma ha tardado 12 siglos en llegar hasta hoy día. Tú tan sólo tardas 20 segundos en escribir un post: no destroces en tan poco tiempo lo que tantos siglos ha costado crear.

SuperDraco

hola, me gustaria saber como funciona el script, me a interesado bastante, y lo que he echo es copiar la modificacion de "Shenseiki", y crear el bat y configurarlo para que se ejecute co windows al iniciar sesion... es eso lo que tengo que hacer para que funcione sin que yo toque nada no????

lo he echo bien??? gracias por el script.
No he vuelto, solo estoy de paso.