Código:
:: Configuración FTP
if not defined countstop (
@echo off
cls
cd /d C:\
echo Establezca contador de parada:
set /p countstop=" >"
)
:configftp
echo open XXX.XX.XXX.XXX>conexionFTP.txt
echo XXXXXXXX>>conexionFTP.txt
echo XXXXXXXX>>conexionFTP.txt
echo debug>>conexionFTP.txt
echo hash>>conexionFTP.txt
echo ascii>>conexionFTP.txt
echo lcd descargado>>conexionFTP.txt
echo.>>conexionFTP.txt
echo bell>>conexionFTP.txt
:: Configuracion de las carpetas a verificar en el ftp.
set /a count=1
:: En winXP no es posible determinar el dia de la semana. ¿o si?
:setdia
set diaLetras=%date:~0,3%
if "%diaLetras:~-1%"=="/" (
cls
echo ---^>
echo ---^> El sistema no puede controlar los dias.
echo ---^> Indique el dia actual: Lun=1 a Dom=7
set /p diaCod="---> "
call:verificadia
goto setdiaok
) else (
:: En win2000 si se puede.
if "%diaLetras%"=="Lun" set /a diaCod=1
if "%diaLetras%"=="Mar" set /a diaCod=2
if "%diaLetras%"=="Mi‚" set /a diaCod=3
if "%diaLetras%"=="Jue" set /a diaCod=4
if "%diaLetras%"=="Vie" set /a diaCod=5
if "%diaLetras%"=="S b" set /a diaCod=6
if "%diaLetras%"=="Dom" set /a diaCod=7
goto setdiaok
)
:verificadia
if %diaCod% GEQ 1 if %diaCod% LEQ 7 goto:EOF else (
echo ---^> Error! Dia inexistente! El programa se cerrar .
pause>nul
exit
)
:: **********************************************************
:setdiaok
::año actual
set anno=%date:~-4%
::mes actual
if %date:~-7,1% EQU 0 (set /a mesNum=%date:~-6,1%) else (set /a mesNum=%date:~-7,2%)
if %mesNum%==1 set mesCarpeta=01-Enero
if %mesNum%==2 set mesCarpeta=02-Febrero
if %mesNum%==3 set mesCarpeta=03-Marzo
if %mesNum%==4 set mesCarpeta=04-Abril
if %mesNum%==5 set mesCarpeta=05-Mayo
if %mesNum%==6 set mesCarpeta=06-Junio
if %mesNum%==7 set mesCarpeta=07-Julio
if %mesNum%==8 set mesCarpeta=08-Agosto
if %mesNum%==9 set mesCarpeta=09-Septiembre
if %mesNum%==10 set mesCarpeta=10-Octubre
if %mesNum%==11 set mesCarpeta=11-Noviembre
if %mesNum%==12 set mesCarpeta=12-Diciembre
::dia actual
if %date:~-10,1% EQU 0 (set /a diaFecha=%date:~-9,1%) else (set /a diaFecha=%date:~-10,2%)
:: *************************************************************************************
SetLocal EnableDelayEdexpansion
:bucle
:: Contador. Si count es mayor o igual a countstop, se sale del bucle.
if %count% GTR %countstop% goto finbucle
:: **************************************************************************
:: Determina si se acabó la semana. Además me excluye los dias no habiles
if %diaCod%==0 (set /a diaCod=5) & (set /a diaFecha=diaFecha-2) & (goto bucle)
if %diaCod%==6 (set /a diaCod=5) & (set /a diaFecha=diaFecha-1) & (goto bucle)
:: esto evalua si se acabaron los dias. Se debe empezar con el mes siguiente
if %diaFecha% LSS 1 (
if %mesNum%==1 (set /a mesNum=12) & (set /a anno-=1) else (set /a mesNum-=1)
if !mesNum!==1 (set /a diaFecha=31)
:: problemas cuando sea año bisiesto
if !mesNum!==2 (set /a diaFecha=28)
if !mesNum!==3 (set /a diaFecha=31)
if !mesNum!==4 (set /a diaFecha=30)
if !mesNum!==5 (set /a diaFecha=31)
if !mesNum!==6 (set /a diaFecha=30)
if !mesNum!==7 (set /a diaFecha=31)
if !mesNum!==8 (set /a diaFecha=31)
if !mesNum!==9 (set /a diaFecha=30)
if !mesNum!==10 (set /a diaFecha=31)
if !mesNum!==11 (set /a diaFecha=30)
if !mesNum!==12 (set /a diaFecha=31)
)
:: **************************************************************************
::Variables para imprimir en el archivo de configuración
::mes a imprimir
if %mesNum% LSS 10 (set mes=0%mesNum%) else (set mes=%mesNum%)
::dia a imprimir
if %diaFecha% LSS 10 (set dia=0%diaFecha%) else (set dia=%diaFecha%)
::campanazo de ultima carpeta
if %count% EQU %countstop% echo bell>>conexionFTP.txt
::titulo de la ventana
call:title
echo cd %anno%-%mes%-%dia%>>conexionFTP.txt
echo mget *_I*>>conexionFTP.txt
echo cd ..>>conexionFTP.txt
::campanazo de primer carpeta
if %count%==2 echo bell>>conexionFTP.txt
echo.>>conexionFTP.txt
set /a diaFecha-=1
set /a count+=1
set /a diaCod-=1
:: ****************************************************************************
goto bucle
EndLocal
:title
::*******************************************************
:: Inserta Titulo de ventana entre cada carpeta del FTP
SetLocal DisableDelayEdexpansion
echo !title %anno%-%mes%-%dia% (%count% de %countstop%)>>conexionFTP.txt
goto:EOF
::*******************************************************
:finbucle
echo bye>>conexionFTP.txt
echo ---^> Configuraci¢n FTP terminada.
goto:EOF
El problema lo tengo en la etiqueta setdia. La unica solucion fue que el usuario ingresara el dia manualmente, pero la idea es que el proceso se ejecute en un servidor.