Показать полную графическую версию : Батник с условием копирвоания новых файлов по фтп.
Narkolog
15-12-2010, 10:53
Ребят помогите пожалуйста, чет не могу сообразить как написать данный батник.
вот что есть:
@echo off
start /min ftp.exe -s:d:\ftp_cmd.txt
Содержимое ftp_cmd.txt :
open 10.6.0.4
ххх
ххх
cd /jr/ххх
lcd d:\ххх
prompt
mput *.rar
quit
немного лирики:
Вопрос сложный - разные 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
Narkolog
15-12-2010, 20:10
Спасибо буду пробовать, завтра отпишусь.
Narkolog
18-12-2010, 10:02
Неподошел ваш вариант, больше решений нет ?
ну тогда опишите условия по-подробнее, насколько много файлов появляется, условия их появления на компе, насколько критично соединяться с ftp-сервером для передачи каждого файла, исчезают ли на ftp уже залитые файлы и нужно ли их заливать заново. В любом случае - получить список того, что лежит на сервере непросто, особенно если при этом хочется узнать размеры файлов - проще держать список на локальном компе, где записано, что и когда уже выгружалось.
Narkolog
29-12-2010, 09:48
Условия следующие в папке на сервере лежат картинки формата gif их необходимо копировать только при условии что они новые, т.е условие смотрит на дату.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.