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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файла с FTP-сервера

Ответить
Настройки темы
CMD/BAT - [решено] Копирование файла с FTP-сервера

Аватара для stolyar

Ветеран


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


Конфигурация

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


Приветствую!

Не могу никак разобраться в написании батника, который бы копировал нужный мне файл с ФТП. Я напоролся на тему - http://forum.oszone.net/post-1094450.html , но так как там написано у меня не получается..((( Принцип мой такой:
Подключение к FTP - юзер Anonimous без пароля - зайти /subfolder1/subfolder2 - там лежит файл file.zip который нужно скачать и сохраниться на локальный диск.

NEED HELP!

Отправлено: 10:17, 04-06-2009

 

Аватара для Xaegr

Сотрудник Microsoft


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

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


Цитата Sarus:
Копирует определенный файл на ура, а если копировать по маске, то:
550 Failed to open file »
Вы уверены что используете mget для копирования по маске, а не простой get?
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:34, 01-12-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Sarus

Новый участник


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

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


Цитата Xaegr:
Вы уверены что используете mget для копирования по маске, а не простой get?
Точно, использовал get для копирования по маске. Исправил на mget все за работало. Спасибо.
Код: Выделить весь код
@Echo Off
:: ~Параметры соединения
Set $Host=87.242.75.131
Set $User=anonymous
Set $Pass=
:: ~Что и куда копируем
SET $SRC=pub/drweb/bases/*.txt
SET $DST=D:\Temp\UploadFtp\2009\*.txt
:: ~Временные файлы
Set $FFtp=%~dpn0.cfg
:: Готовим CFG-файл
Echo.%$User%>"%$FFtp%"
Echo.%$Pass%>>"%$FFtp%"
Echo mget "%$SRC%" "%$DST%">>"%$FFtp%"
Echo prompt
Echo bye>>"%$FFtp%"
:: Выполняем команду
FTP -i -s:"%$FFtp%" %$Host%
Файл копируется в текущий каталог где лежит bat, т.е. в D:\Temp\UploadFtp, хотя должен копироваться в D:\Temp\UploadFtp\2009.
Что не так?

Последний раз редактировалось Sarus, 01-12-2009 в 16:45.


Отправлено: 14:30, 01-12-2009 | #12


Аватара для Xaegr

Сотрудник Microsoft


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

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


Цитата Sarus:
Файл копируется в текущий каталог где лежит bat, т.е. в D:\Temp\UploadFtp, хотя должен копироваться в D:\Temp\UploadFtp\2009.
Что не так? »
Попробуйте перед выполнением команды сделать cd в каталог назначения, а ftp.exe передавать уже полный путь на файл скрипта.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:25, 01-12-2009 | #13


Аватара для Sarus

Новый участник


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

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


Дописал:
Код: Выделить весь код
...
:: Выполняем команду
CD D:\Temp\UploadFtp\2009
FTP -i -s:"%$FFtp%" %$Host%
Помогло.

Отправлено: 17:45, 01-12-2009 | #14


Аватара для Sarus

Новый участник


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

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


Здравствуйте еще раз.
Код: Выделить весь код
@Echo Off
:: Параметры соединения
Set $Host=ftp.microsoft.com
Set $User=anonymous
Set $Pass=
:: Что и куда копируем
SET $SRC=MISC/beckyk/*.*
SET $DST=D:\Temp\GetFtp\2009\*.*
:: Временные файлы
Set $FFtp=%~dpn0.cfg
:: Готовим CFG-файл
Echo.%$User%>"%$FFtp%"
Echo.%$Pass%>>"%$FFtp%"
Echo mget "%$SRC%" "%$DST%">>"%$FFtp%"
Echo prompt
Echo bye>>"%$FFtp%"
:: Выполняем команду
CD D:\Temp\GetFtp\2009
FTP -d -i -s:"%$FFtp%" %$Host%>>GetFtp.log
При использовании этого скрипта все отлично работало на ftp: //87.242.75.131, но не отрабатывает у меня на рабочем ftp и такая же ситуация на ftp.microsoft.com
В логе ошибки:
GetFtp.log
Связь с ftp.microsoft.akadns.net.
220 Microsoft FTP Service
Пользователь (ftp.microsoft.akadns.net: (none)): --->
USER anonymous
331 Anonymous access allowed, send identity (e-mail name) as password.
--->
PASS
230-Welcome to FTP.MICROSOFT.COM. Also visit http://www.microsoft.com/downloads.
230 User logged in.
ftp> ---> mget "MISC/beckyk/*.*" "D:\Temp\GetFtp\2009\*.*"
TYPE A
---> PORT 192,168,1,33,222,96
---> NLST MISC/beckyk/*.*
---> PORT 192,168,1,33,222,97
---> NLST D:\Temp\GetFtp\2009\*.*
The parameter is incorrect.

---> TYPE A
200 Type set to A.
Не удается найти список файлов удаленного компьютера
ftp> ---> bye
QUIT
221 Thank you for using Microsoft products.

Уже голосу сломал, помогите разобраться в проблеме. И как сделать чтоб в случае успешного копирования файлы удалялись с ftp?

Отправлено: 01:40, 04-12-2009 | #15


Аватара для Oleg48

Старожил


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

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


Как вариант предлогаю посмотреть альтернативный ftp-браузер работающий с командной строки - ncftp в который входят несколько очень удачных программ, например скачивание с ftp.microsoft.com я реализовал так (пример работает):
Код: Выделить весь код
echo   
SETLOCAL enabledelayedexpansion  
SET "pathBase=%~d0\_Base\_All\test2009"  
cd "%pathBase%"  
ncftpget -F ftp://ftp.microsoft.com/MISC/test/*.*  
exit
А в help по самой ncftp прочитал такие строки:
Код: Выделить весь код
get ...
Another thing you can do is delete a remote file after you download it. This can be useful when a remote host expects a file to be removed when it has been retrieved. Use the double-D flag, such as ``get -DD'' to do this.
Вольный перевод (за достоверность не отвечаю):
Код: Выделить весь код
Другая вещь, которую Вы можете сделать, удалять отдаленный файл после того, как Вы загрузили его. Это может быть полезно,   когда отдаленный главный компьютер ожидает, что файл будет удален, когда он был восстановлен. Используйте удвоенный флажок -D,  "get -DD" можно сделать это.
Этой возможностью я еще не пользовался. Надеюсь что это поможет Вам
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:14, 04-12-2009 | #16


Аватара для Sarus

Новый участник


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

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


Oleg48, спасибо за помощь, все-таки решил проблему с батником... теперь работает.
Осталось только разобраться с удалением файлов на фтп в случае успешного копирования в локальную папку.
Просто не хочется использовать альтернативные программки.

Последний раз редактировалось Sarus, 04-12-2009 в 19:03.


Отправлено: 18:33, 04-12-2009 | #17


Аватара для Sarus

Новый участник


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

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


Приветствую знатоков!
При использовании вот этого
bat
HTML код: Выделить весь код
Set $Host=xx.xxx.xxx.xx Set $User=**** Set $Pass=**** Set $SRC=BDK6911 Set DST=D:\GetFtp Set $FFtp=%~dpn0.cfg Set $FTmp=%~dpn0.tmp Echo.%$User%>"%$FFtp%" Echo.%$Pass%>>"%$FFtp%" Echo cd %$SRC%>>"%$FFtp%" Echo mget *.*>>"%$FFtp%" Echo prompt Echo bye>>"%$FFtp%" cd %DST%\%Date% FTP -i -s:"%$FFtp%" %$Host%>~GetFtp.log

все копируется, однако заметил, что архивы (.arj и .rar) после копирования увеличиваются в размере на несколько килобайт, следовательно CRC-сумма уже другая. Может мне кто-нибудь объяснить с чем это связанно?
GetFtp.log
230 User **** logged in.
ftp> cd BDK6911
250 CWD command successful
ftp> mget *.*
200 Type set to A
200 PORT command successful
150 Opening ASCII mode data connection for 1215_02.12.2009_15.59.arj (529297 bytes)
226 Transfer complete.
ftp: 530840 байт получено за 2.67 (сек) со скоростью 198.59 (КБ/сек).
ftp> bye
221 Goodbye.

Заранее спасибо!

Отправлено: 00:28, 08-12-2009 | #18


Ветеран


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

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


Попробуйте посмотреть это:
Код: Выделить весь код
hh.exe %SystemRoot%\Help\ntcmds.chm::/ftp__binary.htm
Это сообщение посчитали полезным следующие участники:

Отправлено: 04:45, 08-12-2009 | #19


Аватара для Sarus

Новый участник


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

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


Цитата Iska:
Попробуйте посмотреть это: ...
Действительно то что надо. Как-то упустил этот момент.

Отправлено: 09:37, 11-12-2009 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование файла с FTP-сервера

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование файлов с моего пк на FTP-сервер zeroua Скриптовые языки администрирования Windows 13 04-09-2012 12:57
Установка - [решено] Копирование файла на все компьютеры в домене S.M.A.X. Microsoft Windows 2000/XP 5 30-03-2009 08:48
VBS/WSH/JS - [решено] Копирование файла в системные папки Dimas_83 Программирование и базы данных 6 13-02-2009 13:29
Прямое копирование с ftp на ftp dzheka3d Флейм 2 18-01-2009 21:31
Двойное копирование файла с FTP. :( BlackMonk Хочу все знать 3 13-02-2005 09:08




 
Переход