Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрипт копирующий из ftp телефона только новые файлы, нужна помощь !!! (http://forum.oszone.net/showthread.php?t=283611)

Striker1000 14-06-2014 01:52 2363871

Скрипт копирующий из ftp телефона только новые файлы, нужна помощь !!!
 
Здравствуйте уважаемые форумчане !!!
Озадачился проблемой бекапа фоток с телефона, суть в том что в определенное время телефон запускает 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

Georgio 14-06-2014 18:00 2364047

Цитата:

Цитата Striker1000
Подскажите пожалуйста что переделать в нем ???? »

Переделывать ничего не нужно. Надо писать пакетный файл "с нуля", ориентируясь на свои нужды.


Цитата:

Цитата Striker1000
чтобы на комп скидывались недостающие файлы с ftp »


Код:

@echo off& :Команда "echo off" обязательна!

rem Подставить в значения переменных свои данные!
 set $#@1_server=open ftp.opera.com
 set $#@2_user=anonymous
 rem В случае наличия пароля вставить его между кавычек вместо символа процента!
 set $#@3_password="%"
 set $#@4_ftp_folder=cd "pub/opera/win/1216/int"
 set "local_folder=C:\Users\1\AppData\Local\Temp\Work\537"

(for /f "tokens=1* delims==" %%i in ('set $#@') do echo.%%~j)>ftp_cmd.tmp
(for %%i in ("ls . ftp_lst.tmp" close bye) do echo %%~i)>>ftp_cmd.tmp
ftp -s:ftp_cmd.tmp
chcp 1251>nul
dir /a-d /b "%local_folder%">cmp_lst.tmp
chcp 866>nul
findstr /ilvxg:"cmp_lst.tmp" "ftp_lst.tmp">ftp_new.tmp
(for /f "tokens=1* delims==" %%i in ('set $#@') do echo.%%~j)>ftp_cmd.tmp
echo lcd "%local_folder%">>ftp_cmd.tmp
(for %%i in (binary hash) do echo %%i)>>ftp_cmd.tmp
(for /f "usebackq delims=" %%i in ("ftp_new.tmp") do echo get "%%i")>>ftp_cmd.tmp
(for %%i in (close bye) do echo %%i)>>ftp_cmd.tmp
ftp -s:ftp_cmd.tmp
rem Удаление временных файлов "закомментировано": могут пригодиться для "разбора полётов"!
:del cmp_lst.tmp ftp_cmd.tmp ftp_lst.tmp ftp_new.tmp
exit /b


Striker1000 14-06-2014 18:48 2364055

Georgio, Огромное тебе Человеческое СПАСИБО !!!! Я всю голову сломал экспериментируя со старым скриптом, а ты мне так помог )))) Спасибо тебе !!!!! Все работает на Ура еще и с отчетами ваще класс !!!


Время: 11:50.

Время: 11:50.
© OSzone.net 2001-