Копировать файлы с FTP-сервера в локальный каталог? - PullRequest
5 голосов
/ 21 февраля 2011

Я хочу создать командный файл, включая следующие функции:

  • Подключение к FTP-серверу
  • Копирование файлов оттуда (каталог с именем out) в локальный каталог
  • в случае успеха, затем удаление файлов с FTP-сервера
  • повторение этих шагов каждые 15 минут

До сих пор я не так много сделал с пакетными файлами, поэтому было бы здорово, если бы вы могли мне помочь. Я знаю, что есть команда ftp, и я знаю, как подключиться (ftp open), но, к сожалению, я не знаю, как копировать эти файлы каждые 15 минут.

Большое спасибо за вашу помощь!

Ответы [ 4 ]

3 голосов
/ 21 февраля 2011

Чтобы запрограммировать ftp из командного файла, см. http://support.microsoft.com/kb/96269. Вам нужно вызвать ftp следующим образом

ftp -i -s:ftpcommands.txt

, где ftpcommands.txt выглядит примерно так:

open ftp.myftpsite.com
username
password
bin
cd out
mget *
del *
bye

Для выполнения этого каждые 15 минут см. Другие ответы (at или планировщик команд).

(Параметр -i предназначен для отключения интерактивных подсказок - другой способсделать это, чтобы добавить команду prompt off в текстовый файл команд перед mget. Без этого mget остановится и попросит вас подтвердить перед получением каждого файла. [Спасибо Адриано за то, что указал на это!])

1 голос
/ 08 ноября 2017

Ответ , принятый @ AAT , предполагает использование встроенного в Windows клиента ftp.exe для командной строки. Хотя это может сработать, чаще это не сработает, поскольку этот клиент поддерживает только активный режим FTP, который плохо сочетается с современными вездесущими брандмауэрами и NAT. Он также не поддерживает зашифрованные FTPS (FTP через TLS / SSL).

Если у вас возникли проблемы с вышеуказанным, вам нужно использовать сторонний FTP-клиент. Большинство из них поддерживают как пассивный режим, так и шифрование.


Например, с WinSCP FTP-клиентом , вы можете использовать следующий пакетный файл (.bat):

WinSCP.com /command ^
    "open ftp://username:password@ftp.example.com/" ^
    "get /out/* c:\local\path\" ^
    "exit"

Если у вас уже есть сценарий ftp.exe, есть руководство по преобразованию его в сценарий WinSCP .


Сведения о планировании см. В руководстве по планированию передач на FTP-сервер .

.

(я автор WinSCP)

0 голосов
/ 01 ноября 2017

Использование только одного (1) скрипта .bat файла. Создайте сценарий FTP во временном файле, запустите его и удалите временный файл.

SET "FTPFILE=%TEMP%\myftpscript_%RANDOM%.txt"

ECHO>>"%FTPFILE%" open ftp.myftpsite.com
ECHO>>"%FTPFILE%" username
ECHO>>"%FTPFILE%" password
ECHO>>"%FTPFILE%" bin
ECHO>>"%FTPFILE%" cd out
ECHO>>"%FTPFILE%" mget *
ECHO>>"%FTPFILE%" del *
ECHO>>"%FTPFILE%" bye

ftp -i -s:"%FTPFILE%"

IF EXIST "%FTPFILE%" (DEL "%FTPFILE%")

EXIT /B 0
0 голосов
/ 21 февраля 2011

Windows имеет утилиту at , а также планировщик задач Windows . Любой из них может запускать вашу программу с заданным интервалом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...