Войти

Показать полную графическую версию : Батник с условием копирвоания новых файлов по фтп.


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

NiOl
15-12-2010, 17:50
немного лирики:

Вопрос сложный - разные 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
Неподошел ваш вариант, больше решений нет ?

NiOl
27-12-2010, 18:48
ну тогда опишите условия по-подробнее, насколько много файлов появляется, условия их появления на компе, насколько критично соединяться с ftp-сервером для передачи каждого файла, исчезают ли на ftp уже залитые файлы и нужно ли их заливать заново. В любом случае - получить список того, что лежит на сервере непросто, особенно если при этом хочется узнать размеры файлов - проще держать список на локальном компе, где записано, что и когда уже выгружалось.

Narkolog
29-12-2010, 09:48
Условия следующие в папке на сервере лежат картинки формата gif их необходимо копировать только при условии что они новые, т.е условие смотрит на дату.




© OSzone.net 2001-2012