Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить PM | Цитировать


немного лирики:

Вопрос сложный - разные FTP сервера немного по-разному выдают список файлов, в добавок там излишние преобразования в зависимости от даты файла отностительно текущей... лично я в похожей задаче отказался пользовать команду LS для сравнения файлов и сделал примитивно - для каждого успешно выгруженного файла (ftp.exe завершился без ошибок) создавал в отдельном каталоге одноименный файлик с датой выгрузки. При следующем сеансе проверял все файлы в папке и выгружал только те, что не были найдены в т.н. логе.

В дальнейшем хотел упростить проверку за счет использования лог-файла (вместо создания файликов с датами), но руки "не дошли", ибо пока работает древний скриптик, что-либо мутить было лень.

Код: Выделить весь код
@Echo Off
set home=%CD%

rem Turn ON Variable extensions
set log=.
for %%f in (.) do set log=!log!%%f
if %log%==.. goto L00
if "%1"=="Take2" (
echo Err: Variable extensions not supported!
goto Exit
)
%COMSPEC% /E:ON /V:ON /C %0 Take2
goto Exit

:L00
set src=B:\
set wrk=%CD%\SyncList
set msk=*.TIB
set log="%CD%\Sync.log"
set ftc="%CD%\Sync.ftp"

net use b: \\192.168.0.8\BackUp

if not exist "%wrk%" md "%wrk%" >Nul
cd "%src%"
%src:~0,2%

rem Search File to transfer
:L01
set tm=%time::=-%
set tm=%date:~6,4%-%date:~3,2%-%date:~0,2% %tm:~0,-3%
del /f %ftc%>Nul
set fn=.
for %%f in (%msk%) do if not exist "%wrk%\%%f" if "!fn!"=="." set fn=%%f
if "%fn%"=="." Goto Exit


echo.
echo.
echo =====================
echo  %tm% %fn%
echo =====================
echo open xxx.xxx 21>%ftc%
echo login>>%ftc%
echo pass>>%ftc%
echo binary>>%ftc%
echo cd KV>>%ftc%
echo put %fn%>>%ftc%
echo bye>>%ftc%
echo.>>%log%
echo ===v.20090514===================>>%log%
echo %tm% %fn%>>%log%

"%home%\ftps" -resume -quiterror -s:%ftc% >%TEMP%\FTP.LOG
set ErrN=N%ErrorLevel%
set tm=%time::=-%
set tm=%date:~6,4%-%date:~3,2%-%date:~0,2% %tm:~0,-3%

rem echo %ErrN%
rem echo %fn%
rem pause

if "%ErrN%"=="N0" (
Echo %tm% Done>>%log%
Echo Done at %tm%>>"%wrk%\%fn%"
) else (
Echo %tm% Error %ErrN%>>%log%
type %TEMP%\FTP.LOG >>%log%
)
echo ================================>>%log%
echo.>>%log%

Goto L01

:Exit
cd "%home%"
%home:~0,2%
if exist B:\ net use b: /d /y

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 17:50, 15-12-2010 | #2