繁体   English   中英

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

[英]Copy files from FTP server to local directory?

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

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

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

非常感谢你的帮助!

要从批处理文件编程 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参数是关闭交互式提示- 另一种方法是在mget之前的命令文本文件中添加一个prompt off命令。没有这个, mget将停止并在获取每个文件之前要求您确认。 [感谢阿德里亚诺指出这一点!])

@AAT 接受的答案建议使用 Windows 内置的ftp.exe命令行客户端。 虽然这可以工作,但更多时候它不会,因为这个客户端只支持 FTP 活动模式,不能很好地与当今无处不在的防火墙和 NAT 配合使用。 它也不支持加密的 FTPS(FTP over TLS/SSL)。

如果您有上述问题,则需要使用第 3 方 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 的作者)

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

Windows 具有at实用程序以及 Windows任务调度程序 任何一个都可以以指定的时间间隔运行您的程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM