Striker1000
14-06-2014, 01:52
Здравствуйте уважаемые форумчане !!!
Озадачился проблемой бекапа фоток с телефона, суть в том что в определенное время телефон запускает ftp сервер а домашний компьютер должен зайти на него и скачать там новые появившиеся файлы фото\видео. Я нашел скрипт который делает все наоборот он может строить список файлов в двух папках и сравнивать их и недостающие файлы в папке ftp он кидает файлы с компа. Но мне нужно наоборот чтобы на комп скидывались недостающие файлы с ftp на телефоне. Подскажите пожалуйста что переделать в нем ????
@echo on
chcp 1251
set SOURCE_FILES="D:\bacups4mini\Camera1\*.*"
set DEST_FOLDER="//Camera"
set DEST_SERVER=192.168.0.101 2121
set USERNAME=anonymous
set USERPASS=
rem Составление списка команд для получения списка файлов на ftp
echo open %DEST_SERVER%>ftp_cmd.tmp
echo %USERNAME%>>ftp_cmd.tmp
echo %USERPASS%>>ftp_cmd.tmp
echo cd %DEST_FOLDER%>>ftp_cmd.tmp
echo ls>>ftp_cmd.tmp
echo close>>ftp_cmd.tmp
echo bye>>ftp_cmd.tmp
rem Получение списка файлов.
rem for нужен, чтобы вычистить из протокола все, кроме списка файлов
for /f "tokens=* delims=" %%i in ('ftp -s:ftp_cmd.tmp') do call :clearlist "%%i"
rem Составление списка команд для отправки файлов на ftp
echo open %DEST_SERVER%>ftp_cmd.tmp
echo %USERNAME%>>ftp_cmd.tmp
echo %USERPASS%>>ftp_cmd.tmp
echo cd %DEST_FOLDER%>>ftp_cmd.tmp
echo binary>>ftp_cmd.tmp
rem Собственно список файлов формируется здесь
for %%i in (%DEST_FOLDER%) do call :findfile "%%i"
rem Завершение списка команд для отправки файлов на ftp
echo close>>ftp_cmd.tmp
echo bye>>ftp_cmd.tmp
pause
rem Собственно отправка, протокол идет на консоль
ftp -s:ftp_cmd.tmp
rem Удаление временных файлов
::del ftp_cmd.tmp
::del ftp_files.tmp
goto eof
:findfile
find /i "%~n1%~x1" ftp_files.tmp>nul
if %errorlevel% == 1 echo put %1>>ftp_cmd.tmp
goto eof
:clearlist
for /f "tokens=1,2* delims= " %%j in (%1) do if "%%j" == "226" set filemode=
if not "%filemode%" == "yes" goto next
echo %1>>ftp_files.tmp
:next
for /f "tokens=1,2* delims= " %%j in (%1) do if "%%j" == "150" set filemode=yes
:eof
Озадачился проблемой бекапа фоток с телефона, суть в том что в определенное время телефон запускает ftp сервер а домашний компьютер должен зайти на него и скачать там новые появившиеся файлы фото\видео. Я нашел скрипт который делает все наоборот он может строить список файлов в двух папках и сравнивать их и недостающие файлы в папке ftp он кидает файлы с компа. Но мне нужно наоборот чтобы на комп скидывались недостающие файлы с ftp на телефоне. Подскажите пожалуйста что переделать в нем ????
@echo on
chcp 1251
set SOURCE_FILES="D:\bacups4mini\Camera1\*.*"
set DEST_FOLDER="//Camera"
set DEST_SERVER=192.168.0.101 2121
set USERNAME=anonymous
set USERPASS=
rem Составление списка команд для получения списка файлов на ftp
echo open %DEST_SERVER%>ftp_cmd.tmp
echo %USERNAME%>>ftp_cmd.tmp
echo %USERPASS%>>ftp_cmd.tmp
echo cd %DEST_FOLDER%>>ftp_cmd.tmp
echo ls>>ftp_cmd.tmp
echo close>>ftp_cmd.tmp
echo bye>>ftp_cmd.tmp
rem Получение списка файлов.
rem for нужен, чтобы вычистить из протокола все, кроме списка файлов
for /f "tokens=* delims=" %%i in ('ftp -s:ftp_cmd.tmp') do call :clearlist "%%i"
rem Составление списка команд для отправки файлов на ftp
echo open %DEST_SERVER%>ftp_cmd.tmp
echo %USERNAME%>>ftp_cmd.tmp
echo %USERPASS%>>ftp_cmd.tmp
echo cd %DEST_FOLDER%>>ftp_cmd.tmp
echo binary>>ftp_cmd.tmp
rem Собственно список файлов формируется здесь
for %%i in (%DEST_FOLDER%) do call :findfile "%%i"
rem Завершение списка команд для отправки файлов на ftp
echo close>>ftp_cmd.tmp
echo bye>>ftp_cmd.tmp
pause
rem Собственно отправка, протокол идет на консоль
ftp -s:ftp_cmd.tmp
rem Удаление временных файлов
::del ftp_cmd.tmp
::del ftp_files.tmp
goto eof
:findfile
find /i "%~n1%~x1" ftp_files.tmp>nul
if %errorlevel% == 1 echo put %1>>ftp_cmd.tmp
goto eof
:clearlist
for /f "tokens=1,2* delims= " %%j in (%1) do if "%%j" == "226" set filemode=
if not "%filemode%" == "yes" goto next
echo %1>>ftp_files.tmp
:next
for /f "tokens=1,2* delims= " %%j in (%1) do if "%%j" == "150" set filemode=yes
:eof