Показать полную графическую версию : [решено] Копирование файла с FTP-сервера
Приветствую!
Не могу никак разобраться в написании батника, который бы копировал нужный мне файл с ФТП. Я напоролся на тему - http://forum.oszone.net/post-1094450.html , но так как там написано у меня не получается..((( Принцип мой такой:
Подключение к FTP - юзер Anonimous без пароля - зайти /subfolder1/subfolder2 - там лежит файл file.zip который нужно скачать и сохраниться на локальный диск.
NEED HELP!
Genry111
04-06-2009, 11:01
stolyar, я сделал так , у меня в папке d:\update лежит 2 файла 1. update.cmd 2.upd.script
update.cmd :
@echo off
d:
cd UPDATE
ftp -s:D:\UPDATE\upd.script -i >D:\UPDATE\ftp.log
upd.script :
open your.site.com
user
password
cd subfolder1
cd subfolder2
binary
get file.zip
quit
Два вопроса:
1. Куда он сохранит файл?
2. где USER и PASSWORD, мне там через пробел написать имя пользователя и пароль? А если пароля нет, строчку пустой оставить, или удалить?
можно все в батник запихать:
@Echo Off
:: ~Параметры соединения
Set $Host=192.168.10.10
Set $User=anonymous
Set $Pass=user@mail.ru
:: ~Что и куда копируем
SET $SRC=DIR\File.txt
SET $DST=C:\TEST\File.txt
:: ~Временные файлы
Set $FFtp=%~dpn0.cfg
:: Готовим CFG-файл
Echo %$User%>"%$FFtp%"
Echo %$Pass%>>"%$FFtp%"
Echo get "%$SRC%" "%$DST%">>"%$FFtp%"
Echo bye>>"%$FFtp%"
:: Выполняем команду
FTP -s:"%$FFtp%" %$Host%
amel27, а вот 5 строчка, где написано "мыло", это пароль сюды указывать? А если пароля нет?
stolyar, для anonymous можно ставить любое мыло... ну или так:
@Echo Off
:: ~Параметры соединения
Set $Host=192.168.10.10
Set $User=anonymous
Set $Pass=
:: ~Что и куда копируем
SET $SRC=DIR\File.txt
SET $DST=C:\TEST\File.txt
:: ~Временные файлы
Set $FFtp=%~dpn0.cfg
:: Готовим CFG-файл
Echo.%$User%>"%$FFtp%"
Echo.%$Pass%>>"%$FFtp%"
Echo get "%$SRC%" "%$DST%">>"%$FFtp%"
Echo bye>>"%$FFtp%"
:: Выполняем команду
FTP -s:"%$FFtp%" %$Host%
Я подставляю:
@Echo Off
:: ~Параметры соединения
Set $Host=87.242.75.131
Set $User=anonymous
Set $Pass=
:: ~Что и куда копируем
SET $SRC=pub\drweb\bases\drwebase.zip
SET $DST=D:\TEST\drwebase.zip
:: ~Временные файлы
Set $FFtp=%~dpn0.cfg
:: Готовим CFG-файл
Echo.%$User%>"%$FFtp%"
Echo.%$Pass%>>"%$FFtp%"
Echo get "%$SRC%" "%$DST%">>"%$FFtp%"
Echo bye>>"%$FFtp%"
:: Выполняем команду
FTP -s:"%$FFtp%" %$Host%
Нифига не идет ((( Долго висит окно CMD.... файл .cfg пишет:
[code]
anonymous
get "pub\drweb\bases\drwebase.zip" "D:\TEST\drwebase.zip"
bye
[]/code
Что не так?
проверил - у меня нормально качается, по ходу у вас проблемы в сети, попробуйте в командной строке запустить "FTP" и вручную подключиться через "open 87.242.75.131"
Пишет:
ftp: connect :Неизвестный код ошибки
Кстати, возможно действительно проблемы в сети... Я у себя дома проверю, а потом отпишу.. Хотя, раз у Вас, amel27, работает, значит и у меня будет... Так что думаю что топик можно закрывать! =)
Большое спасибо! Проблема решена!
Копирует определенный файл на ура, а если копировать по маске, то:
550 Failed to open file
Копирует определенный файл на ура, а если копировать по маске, то:
550 Failed to open file »
Вы уверены что используете mget для копирования по маске, а не простой get?
Вы уверены что используете 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.
Что не так?
Файл копируется в текущий каталог где лежит bat, т.е. в D:\Temp\UploadFtp, хотя должен копироваться в D:\Temp\UploadFtp\2009.
Что не так? »
Попробуйте перед выполнением команды сделать cd в каталог назначения, а ftp.exe передавать уже полный путь на файл скрипта.
Дописал:
...
:: Выполняем команду
CD D:\Temp\UploadFtp\2009
FTP -i -s:"%$FFtp%" %$Host%
Помогло.
Здравствуйте еще раз.
@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
В логе ошибки:
Связь с 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?
Как вариант предлогаю посмотреть альтернативный ftp-браузер работающий с командной строки - ncftp (http://www.ncftp.com) в который входят несколько очень удачных программ, например скачивание с 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" можно сделать это.
Этой возможностью я еще не пользовался. Надеюсь что это поможет Вам
Oleg48, спасибо за помощь, все-таки решил проблему с батником... теперь работает.
Осталось только разобраться с удалением файлов на фтп в случае успешного копирования в локальную папку.
Просто не хочется использовать альтернативные программки.
Приветствую знатоков!
При использовании вот этого 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-сумма уже другая. Может мне кто-нибудь объяснить с чем это связанно? :blink:
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.
Заранее спасибо!
Попробуйте посмотреть это:
hh.exe %SystemRoot%\Help\ntcmds.chm::/ftp__binary.htm
Попробуйте посмотреть это: ...
Действительно то что надо. Как-то упустил этот момент.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.