将文件从FTP服务器复制到本地目录?

时间:2011-02-21 09:48:02

标签: ftp batch-file cmd

我想创建一个批处理文件,包括以下功能:

  • 连接到FTP服务器
  • 将文件从那里(名为“out”的目录)复制到本地目录
  • 如果成功,则从FTP服务器删除文件
  • 每15分钟重复一次这些步骤

到目前为止,我还没有对批处理文件做过那么多,所以如果你能帮助我会很棒。我知道有ftp命令,我知道如何连接(ftp open),但遗憾的是我不知道如何每隔15分钟从那里复制这些文件。

非常感谢你的帮助!

4 个答案:

答案 0 :(得分:3)

要从批处理文件编程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或Command Scheduler)。

-i参数用于关闭交互式提示 - 另一种方法是在{{{{}}之前向命令文本文件添加prompt off命令1}}。如果没有这个,mget将停止并要求您在获取每个文件之前确认。[感谢Adriano指出这一点!]

答案 1 :(得分:1)

accepted answer by @AAT建议使用Windows内置ftp.exe命令行客户端。虽然这可以工作,但更常见的是它不会,因为这个客户端只支持FTP主动模式,这与当今无处不在的防火墙和NAT不能很好地协同工作。它也不支持加密的FTPS(FTP over TLS / SSL)。

如果您遇到上述问题,则需要使用第三方FTP客户端。他们中的大多数都支持被动模式和加密。

例如,使用WinSCP FTP client,您可以使用以下批处理文件(.bat):

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

如果您已有ftp.exe脚本,则可以找到converting it to WinSCP script的指南。

有关计划部分,请参阅guide to scheduling transfers to FTP server

(我是WinSCP的作者)

答案 2 :(得分:0)

Windows具有at实用程序以及Windows task scheduler。任何一个都可以按指定的时间间隔运行程序。

答案 3 :(得分:0)

仅使用一(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