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