Показать полную графическую версию : FTP копирование всех новых PDF файлов
LAKERS824
03-09-2014, 15:15
Добрый день!
Создал 2 файла
ftp.bat
@echo off
ftp -n -s:C:\1\ftp_cmd.txt results......ru
и ftp_cmd.txt
user ЛОГИН
ПАРОЛЬ
bin
cd /medikament
get *.pdf
quit
но файлы с ФТП не забирает пишет ошибку 550 в результате выполнения get. - что не правильно пишу???
С сервера удалять я ничего не могу. Там находяться файлы xml и pdf.
Мне надо закачивать только PDF файлы.
Причем надо закачивать только новые, которые я не закачивал в прошлый разы.
И закачивать только те, у которых в имени файла содержаться дважды знаки нижнего подчеркивания "_" причем подряд они идти не могут.
Остальные файлы PDF у которых в имени файла одно "_" не качаем.
LAKERS824
03-09-2014, 15:34
виснет после mget *.pdf и без движения........
виснет после mget *.pdf и без движения........ »
Наверное, большие «*.pdf»?
Два в одном (и заменил ключ "-n" на ключ "-i"):
@more +1<"%~f0">.tmp& ftp -i -s:.tmp results......ru& del .tmp& exit
ЛОГИН
ПАРОЛЬ
cd medikament
bin
hash
mget *.pdf
disconnect
quit
.
Мне надо закачивать только PDF файлы.
Причем надо закачивать только новые, которые я не закачивал в прошлый разы.
И закачивать только те, у которых в имени файла содержаться дважды знаки нижнего подчеркивания "_" причем подряд они идти не могут.
Остальные файлы PDF у которых в имени файла одно "_" не качаем. »
:: Изменять в коде можно только знечения переменных.
:: Необходимые для работы пакетного файла временные текстовые файлы будут им созданы и удалены.
@echo off& :: Команда "echo off" обязательна для правильной работы пакетного файла!
set "local_folder=D:\Work\184\results"& :: Задаём папку, в которой находятся уже загруженные файлы, и в которую будут загружаться новые:
set "server=results......ru"
set "login=ЛОГИН"
set "password=ПАРОЛЬ"
set "ftp_folder=/medikament"
set "masks=*.pdf"
set "regular_expression_for_names=^[^_][^_]*_[^_][^_]*_[^_][^_]*\.pdf$"
(
for %%i in ("%login%" "%password%" "cd %ftp_folder%" "ls . 2.tmp" "disconnect" "quit") do echo.%%~i
)>1.tmp
ftp -i -s:1.tmp "%server%"
pushd "%local_folder%"
dir /a-d/b "%masks%">"%~dp03.tmp" 2>nul
popd
(
for %%i in ("%login%" "%password%" "cd %ftp_folder%" "bin" "hash") do echo.%%~i
)>1.tmp
for /f "delims=" %%i in ('
findstr /livxg:3.tmp 2.tmp^| findstr /irc:"%regular_expression_for_names%"
') do echo get "%%i">>1.tmp
for %%i in ("disconnect" "quit") do echo.%%~i>>1.tmp
pushd "%local_folder%"
ftp -i -s:"%~dp01.tmp" "%server%"
popd
for /l %%i in (1 1 3) do del %%i.tmp
echo.
echo Press any key to exit.
pause>nul
exit /b
Изменять в коде можно только знечения переменных, выделенные красным цветом.
LAKERS824
04-09-2014, 09:38
ное, большие «*.pdf»? »
не большие, порядка 60 Кб
LAKERS824
04-09-2014, 10:34
Georgio,
запустил, вот на чем зависает и далее без движения.
...
ftp> cd /medikament
250 CWD command successful.
ftp> ls . 2.tmp
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
LAKERS824, коды пакетных файлов рабочие, сам с их помощью загружал файлы. Очевидно, проблемы с сервером при использовании встроенного FTP-клиента.
LAKERS824
04-09-2014, 12:02
Georgio, попробовал на другом ПК, такая же ситуация. Также пишет что типа процесс не может получить доступ к файлу....
Очевидно, проблемы с сервером при использовании встроенного FTP-клиента. »
попробовал на другом ПК, такая же ситуация. »
LAKERS824, лучше попробуйте другой FTP-сервер.
LAKERS824
04-09-2014, 12:24
удалось запустить.
создается 1.tmp- где данные для подключения
создается 2.tmp - где список файлов на сервере.
создается 3.tmp - пустой.
Но выдается ошибка
FINDSTR: Не удается считать строки из 3.tmp
LAKERS824, вот это другое дело. Причина мне известна, поэтому оперативно отредактировал код:
:: Изменять в коде можно только знечения переменных.
:: Необходимые для работы пакетного файла временные текстовые файлы будут им созданы и удалены.
@echo off& :: Команда "echo off" обязательна для правильной работы пакетного файла!
set "local_folder=D:\Work\184\results"& :: Задаём папку, в которой находятся уже загруженные файлы, и в которую будут загружаться новые:
set "server=results......ru"
set "login=ЛОГИН"
set "password=ПАРОЛЬ"
set "ftp_folder=/medikament"
set "masks=*.pdf"
set "regular_expression_for_names=^[^_][^_]*_[^_][^_]*_[^_][^_]*\.pdf$"
(
for %%i in ("%login%" "%password%" "cd %ftp_folder%" "ls . 2.tmp" "disconnect" "quit") do echo.%%~i
)>1.tmp
ftp -i -s:1.tmp "%server%"
pushd "%local_folder%"
(
echo $$$
dir /a-d/b "%masks%" 2>nul
)>"%~dp03.tmp"
popd
(
for %%i in ("%login%" "%password%" "cd %ftp_folder%" "bin" "hash") do echo.%%~i
)>1.tmp
for /f "delims=" %%i in ('
findstr /livxg:3.tmp 2.tmp^| findstr /irc:"%regular_expression_for_names%"
') do echo get "%%i">>1.tmp
for %%i in ("disconnect" "quit") do echo.%%~i>>1.tmp
pushd "%local_folder%"
ftp -i -s:"%~dp01.tmp" "%server%"
popd
for /l %%i in (1 1 3) do del %%i.tmp
echo.
echo Press any key to exit.
pause>nul
exit /b
.
LAKERS824
04-09-2014, 13:22
Georgio, ошибка та же выходит, но теперь 3.tmp не пустой а содержит "$$$"
Но выдается ошибка
FINDSTR: Не удается считать строки из 3.tmp »
ошибка та же выходит, но теперь 3.tmp не пустой а содержит "$$$" »
LAKERS824, ошибка не та же, а другая, но Вы её не озвучили.
LAKERS824
04-09-2014, 13:59
Georgio, FINDSTR: Не удается считать строки из 3.tmp + к этой ошибке 3.tmp не пустой а содержит "$$$"
LAKERS824, cчитать строки нельзя из пустого файла, а из файла, в котором есть запись "$$$", считать строку можно.
LAKERS824
04-09-2014, 16:02
не понял...может и можно, но ошибка-то вылезает...
LAKERS824
05-09-2014, 08:52
Georgio, FINDSTR: Не удается считать строки из 3.tmp + к этой ошибке 3.tmp не пустой а содержит "$$$"
можете еще раз пояснить? не понял
LAKERS824
30-09-2014, 15:26
видимо проблема в том, что в именах файлов *.pdf есть кириллица.....никак не могу побороть это..
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.