Как загрузить и скачать файлы с FTP. Bat файл.
Сегодня будет интересный пост. Да будет Вам известно, как загружать и скачивать файлы с FTP сервера используя командную строку Windows (cmd.exe) и пакетный файл, проще говоря, батник. Также сегодня на блоге появилась новая рубрика «Командная строка» в которой я буду писать посты на тему bat файлов и о командной строке в целом. Подпишитесь на обновления блога, что бы ни пропустить новых постов.
Так как блог рассчитан на начинающих пользователей ПК, я буду стараться выкладывать больше скриншотов, не только в этой статье, но и в других. Таким образом, я думаю, будет на много понятней и удобней воспринимать информацию.
Лучше не только прочитать, но и увидеть ход работы и результат в картинках!
И так, вернёмся к теме поста, и рассмотрим, как загрузить и удалить файлы с FTP сервера.
Все ниже описанный действия будут происходить на моём локальном FTP сервере, так как в данный момент у меня возникли некоторые проблемы с интернетом, и мне неудобно использовать свой FTP на котором крутится этот блог!
Если Вам интересно, как поставить FTP сервер на свой компьютер, то рекомендую прочитать мой прошлый пост « FTP сервер на домашнем ПК. Без проблем. » будет удобно для тренировки, если Вы не когда до этого момента не работали с FTP через Командную строку Window.
Как подключится к FTP серверу через cmd.
Прежде чем загружать или скачивать файлы с FTP сервера, к нему нужно подключится. Именно это мы и рассмотрим в этой части поста.
Для подключения к FTP используется «команда open» её синтаксис такой:
Open адрес сервера .
Запускаем cmd.exe или сразу встроенную в windows утилиту ftp.exe используя команду «выполнить» горячими клавишами «Win + R» я открою сразу ftp.exe. Если вы решили открыть cmd.exe то просто запустите ftp.exe командой ftp.
После запуска, используя команду open, подключаемся к ftp серверу. В моём случаи адрес ftp такой «127.0.0.1» если Вы используете локальный ftp, то адрес будет такой же, если нет, то, естественно адрес будет другой.
Скачивание, загрузка и удаление файлов с FTP-сервера из командной строки
Часто требуется автоматизировать процессы скачивания, загрузки и удаления файлов c FTP-сервера. Например, при работе с распределенными базами данных 1С или для сохранения резервных копий. Но не все знают, что эти процедуры можно выполнять из командной строки, не прибегая к дополнительному программному обеспечению, то есть средствам Windows. Ниже я приведу синтаксис команд для работы с FTP, а также примеры bat-файлов для этих операций.
1. Команда ftp
Для обмена файлами с FTP-сервером используется команда ftp, вот ее синтаксис:
FTP [-v] [-d] [-i] [-n] [-g] [-s:имя_файла] [-a] [-A] [-x:sendbuffer]
[-r:recvbuffer] [-b:asyncbuffers] [-w:windowsize] [узел]
| -v | Отключение вывода на экран ответов с удаленного сервера. |
| -n | Отключение автоматического входа при начальном подключении. |
| -i | Отключение интерактивных запросов при передаче нескольких файлов. |
| -d | Включение отладочного режима. |
| -g | Отключение глобализации имен файлов (см. команду GLOB). |
| -s:имя_файла | Задание текстового файла, содержащего команды FTP, которые будут выполняться автоматически при запуске FTP. |
| -a | Использование локального интерфейса для привязки соединения. |
| -A | Анонимный вход в службу. |
| -x:send sockbuf | Переопределение стандартного размера буфера SO_SNDBUF (8192). |
| -r:recv sockbuf | Переопределение стандартного размера буфера SO_RCVBUF (8192). |
| -b:async count | Переопределение стандартного размера счетчика async (3) |
| -w:windowsize | Переопределение стандартного размера буфера передачи (65535). |
| узел | Задание имени или адреса IP удаленного узла, к которому необходимо выполнить подключение. |
Как видно, здесь нет операторов для подключения к серверу и работы с файлами. Дело в том, что эта команда только запускает сеанс ftp:

Далее, работа с FTP-сервером происходит уже при помощи следующих операторов (пропустить) :
!
Временный переход в оболочку.
append
Добавление в файл.
ascii
Установка режима передачи файлов в формате ascii.
bell
Выдача звукового сигнала по завершении команды
binary
Установка режима передачи файлов в двоичном формате.
bye
Завершение сеанса ftp и выход.
cd <удаленный_каталог>
Изменение рабочего каталога на удаленном компьютере, где:
<удаленный_каталог> — имя каталога, который станет рабочим.
close
Завершение сеанса ftp.
debug
Переключение режима отладки.
delete <удаленный_файл>
Удаление файла на удаленном компьютере, где:
<удаленный_файл> — имя файла для удаления.
dir [<удаленный_каталог>] [<локальный_файл>]
Вывод содержимого каталога удаленного компьютера, где:
<удаленный_каталог> — каталог, содержимое которого будет выведено, если не задан, используется текущий каталог;
<локальный_файл> — задает локальный файл, для сохранения в список, если не задан, список выводится на экран.
disconnect
Завершение сеанса ftp.
get <удаленный_файл> [<локальный_файл>]
Получение файла, где:
<удаленный_файл> — удаленный файл для копирования;
<локальный_файл> — имя файла на локальном компьютере.
glob
Переключение метасимвольного расширения имен локальных файлов.
hash
Переключение вывода «#» для каждого переданного блока данных.
help [<команда>]
Вывод справочных сведений для команды ftp, где:
<команда> — Команда, описание которой будет выведено, если не задана, произойдет вывод всех команд.
lcd [<локальный_каталог>]
Изменение локального каталога рабочего компьютера, где:
<локальный_каталог> — Имя нового локального каталога, если не задан то будет использоваться имя текущего каталога.
literal <команда_1> … <команда_n>
Отправка произвольной команды ftp, где:
<команда_n> — команды для отправки;
ls [<удаленный_каталог>] [<локальный_файл>]
Вывод сокращенного содержимого каталога удаленного компьютера, где:
<удаленный_каталог> — каталог, содержимое которого будет выведено, если не задан, используется текущий каталог;
<локальный_файл> — задает локальный файл, для сохранения в список, если не задан, список выводится на экран.
mdelete <удаленный_файл_1> … <удаленный_файл_n>
Удаление нескольких файлов на удаленном компьютере, где:
<удаленный_файл_n> — имена файлов для удаления.
mdir <удаленный_каталог_1> … <удаленный_каталог_n> <локальный_файл>
Вывод содержимого нескольких каталогов удаленного компьютера, где:
<удаленный_каталог_n> — каталог, содержимое которого будет выведено;
<локальный_файл> — задает локальный файл, для сохранения в список, если не задан, список выводится на экран.
mget <удаленный_файл_1> … <удаленный_файл_n>
Получение нескольких файлов, где:
<удаленный_файл_n> — удаленный файл для копирования.
mkdir <удаленный_каталог>
Создание каталога на удаленном компьютере, где:
<удаленный_каталог> — имя удаленного каталога для создания.
mls <удаленный_каталог_1> … <удаленный_каталог_n> <локальный_файл>
Вывод сокращенного содержимого нескольких каталогов удаленного компьютера, где:
<удаленный_каталог_n> — каталог, содержимое которого будет выведено, если не задан, используется текущий каталог;
<локальный_файл> — задает локальный файл, для сохранения в список.
mput <локальный_файл_1> … <локальный_файл_n>
Отправка нескольких файлов, где:
<локальный_файл_n> — имя локальных файлов, которые будут скопированы.
prompt
Переключение интерактивной подсказки для составных команд.
put <локальный_файл> [<удаленный_файл>]
Отправка одного файла, где:
<локальный_файл> — имя локального файл для копирования;
<удаленный_файл> — имя файла на удаленном компьютере.
pwd
Вывод рабочего каталога удаленного компьютера.
quit
Завершение сеанса ftp и выход в командную строку.
quote <команда>
Отправка произвольной команды ftp, где:
<команда> — команда для отправки.
recv <удаленный_файл> [<локальный_файл>]
Получение файла с использованием текущих настроек типов файлов, где:
<удаленный_файл> — удаленный файл для копирования;
<локальный_файл> — имя файла на локальном компьютере.
remotehelp [<команда>]
Получение справочных сведений о командах удаленной системы, где:
<команда> — команда удаленной системы, если не задан, то выводится список всех команд.
rename <имя_файла> <новое_имя_файла>
Переименование удаленного файла, где:
<имя_файла> — имя файла для переименования;
<новое_имя_файла> — новое имя файла.
rmdir <имя_каталога>
Удаление каталога на удаленном компьютере, где:
<имя_каталога> — имя каталога для удаления.
send <локальный_файл> [<удаленный_файл>]
Копирование одного файла с использованием текущих настроек типов файлов, где:
<локальный_файл> — имя локального файл для копирования;
<удаленный_файл> — имя файла на удаленном компьютере.
status
Отражение текущего состояния подключения ftp.
trace
Переключение трассировки пакетов.
type [<имя_типа>]
Установка типа передачи файлов, где:
<имя_типа> — тип передачи файлов, если не указан будет выведен текущий тип передачи файлов.
user <имя_пользователя> [<пароль>] [<учетная_запись>]
Отправка сведений для подключения к удаленному компьютеру, где:
<имя_пользователя> — имя пользователя для подключения к удаленному компьютеру;
<пароль> — пароль, для указанного имени пользователя, если не указан, но требуется для подключения, команда ftp запросит его у пользователя;
<учетная_запись> — учетная запись для подключения к удаленному компьютеру, если не указана, но требуется для подключения, команда ftp запросит ее у пользователя;
verbose
Переключение режима вывода сообщений.
Рассмотрим небольшой пример.
Пусть у нас есть FTP-сервер с адресом tavalik.ru, имя пользователя для подключения — tavalik, пароль — 1234567890. Требуется загрузить на сервер в директорию «Temp\Backup» файл file_data.dat из «C:\example», а затем сохранить его же на локальный компьютер, в эту же директорию, но уже под именем file_from_ftp.dat.

Для этого необходимо выполнить следующий набор команд:
В итоге получим требуемый результат:

Обратите внимание, что при указании полного пути на FTP-сервере используется знак «/» между директориями, а для указания пути на локальном компьютере будет использоваться, как обычно, знак «\». Кроме того, если путь будет содержать пробелы, то следует заключить его в кавычки.
Возможен также запуск команды ftp и в пакетном режиме. Эту же задачу можно решить, выполнив команду «ftp -v -n -s:transport.txt» ,

где файл transport.txt находится в директории «C:\example» и содержит тот же набор операторов:

2. Пример bat-файла для загрузки файла на FTP
Теперь попробуем написать «батник» для загрузки файлов на FTP-сервер. Для этого создадим новый текстовый документ, и переименуем его в put_on_ftp.bat . Редактировать его можно обычным Блокнотом, но удобнее это делать с помощью бесплатной программы Notepad++.
Для начала напишем «батник», который будет загружать на сервер tavalik.ru файл file_data.dat из «С:\example» . Алгоритм работы bat-файла будет такой:
- Создаем файл transport.txt с последовательностью операторов ftp;
- Выполняем команду ftp, указав в качестве параметров созданный файл;
- Удаляем transport.txt.

В данном примере имя файла и директорий жестко прописаны в файле. Это не всегда удобно. Доработаем bat-файл таким образом, чтобы данные для загрузки он получал в качестве параметров, а также вынесем все изменяемые значения в переменные файла. Получим следующий код (скачать файл):

Соответственно, чтобы скопировать файл file_data.dat из «C:\example» на FTP-сервер в «Temp\Backup» , потребуется запустить этот «батник» указав в качестве параметров имя файла, локальный и удаленный каталоги.

Аналогичным образом можно написать bat-файлы для получения файлов и удаления файлов на FTP-сервере, а также исполняющий файл с произвольным набором инструкций.
Смотрите также:
Не все знают, что можно создать прямую ссылку на файл, хранимый на FTP-Сервере, «зашив» в нее логин и пароль. Также возможно создать ярлык на какую-либо директорию или даже подключить ее…
Может случиться так, что в процессе установки MS SQL Server 2012 были установлены компоненты, необходимость в которых со временем отпала (или были установлены по ошибке). В этом случае, в целях…
FTP-Сервер обеспечивает возможность передачи файлов между клиентом и сервером с помощью протокола FTP. Здесь будет рассказано как запустить FTP-сервер в Windows Server 2008 R2. 0. Оглавление Добавление службы FTP-сервер Добавление…
Как скачать файл через командную строку/VBS-скрипт без использования сторонних утилит?
Как скачать файл через командную строку/VBS-скрипт без использования сторонних утилит, т.е. без wget, curl и т.д.? Очень нужно скачать файл по прямой ссылке (протокол HTTP) именно встроенными средствами ОС Windows. Заранее спасибо!
bat.cmd
bat.vbs
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.8.2.43556
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Утилита командной строки Wget
GNU Wget — консольная программа для загрузки файлов по сети. Поддерживает протоколы HTTP, FTP и HTTPS, а также работу через HTTP прокси-сервер. Программа включена почти во все дистрибутивы Linux. Утилита разрабатывалась для медленных соединений, поэтому она поддерживает докачку файлов при обрыве соединения.
Для работы с Wget под Windows, переходим по ссылке и скачиваем файл wget.exe . Создаем директорию C:\Program Files\Wget-Win64 и размещаем в ней скачанный файл. Для удобства работы добавляем в переменную окружения PATH путь до исполняемого файла.
Давайте попробуем что-нибудь скачать, скажем дистрибутив Apache под Windows:
Если утилита ругается на сертификаты при скачивании по HTTPS, нужно использовать дополнительную опцию —no-check-certificate .
Примеры
Загрузка всех URL, указанных в файле (каждая ссылка с новой строки):
Скачивание файлов в указанный каталог:
Скачивание файла file.zip и сохранение под именем archive.zip :
Продолжить загрузку ранее не полностью загруженного файла:
Вывод заголовков HTTP серверов и ответов FTP серверов:
Скачать содержимое каталога archive и всех его подкаталогов, при этом не поднимаясь по иерархии каталогов выше: