El problema es que es demasiado lento debido a la forma que esta hecho, la lentitud no es problema cuando son 10 o 20 archivos, pero si cuando son 2000 o mas. El punto es si alguen tiene una idea como hacerlo mas eficiente siguiendo la idea de veririficar que el archivo realmente este en servidor ftp. A su vez creo que puede servirle a alguien.
Código:
@echo off
:CONTANDO
set /A contador=0
FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO set /A contador=1+contador
echo .
echo . ____________________________________________________
echo tienes %contador% archivos para subir
echo . ____________________________________________________
echo .
pause > nul
:ENVIA
set /A conta=0
set /A movidos=1
FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO (
echo open mi_sitio_ftp > manda.ftp
echo user usuario pasword >> manda.ftp
echo put %%x >> manda.ftp
echo ls %%x >> manda.ftp
echo quit >> manda.ftp
ftp -v -n -s:manda.ftp > enviados.txt
FINDSTR /E /I %%x enviados.txt > en_ftp2.txt
echo %%x > local.txt
call :COMPARA
)
:COMPARA
set /P aqui=<local.txt
set /p alla=<en_ftp2.txt
if %aqui%==%alla% (
set /A movidos=1+%movidos%
echo %movidos%/%contador% -- %alla% Archivo enviado correctamente
) ELSE (
if not %aqui%==%alla% DO (
echo %aqui% NO SE HA PODIDO ENVIAR. REVISA SI NO HAY PROBLEMAS DE COMUNICACION
)
goto :eof
echo total de archivos enviados %movidos%
echo total de archivos que deberian enviarse %contador%
Un poco de explicacion
Código:
FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO (
Código:
echo open mi_sitio_ftp > manda.ftp
echo user usuario pasword >> manda.ftp
echo put %%x >> manda.ftp
echo ls %%x >> manda.ftp
echo quit >> manda.ftp
Puesto que segun yo no se pueden mandar variables a una conexion ftp, para cada archivo a subir creo un archivo de instrucciones ftp.
Código:
ftp -v -n -s:manda.ftp > enviados.txt
Código:
FINDSTR /E /I %%x enviados.txt > en_ftp2.txt
Código:
echo %%x > local.txt
Código:
set /P aqui=<local.txt
set /p alla=<en_ftp2.txt
Código:
if %aqui%==%alla% (
set /A movidos=1+%movidos%
echo %movidos%/%contador% -- %alla% Archivo enviado correctamente
) ELSE (
Bien como les dije es sencillo pero pude servirle a alguien y creo tambien que alguien tendra una idea para hacerlo mas eficiente.