将文件从 ftp 传输到本地系统

将文件从 ftp 传输到本地系统

我想从 FTP 服务器复制文件并将其保存到本地系统。我想通过使用批处理文件自动执行此操作。我已经尝试了一个星期,但找不到解决方案。

这是我的实际工作


想要从ftp://172.16.3.132(使用用户名和密码)复制一个名为“Friday.bat”的文件:

@echo off
@ftp -i -s:"%~f0"&GOTO:EOF
open 172.16.3.132
mmftp
((((password entered here)))))
binary
get Friday.bat 
pause

结果:


ftp> @echo off
ftp> @ftp -i -s:"%~f0"&GOTO:EOF
Invalid command.
ftp> open 172.16.3.132
Connected to 172.16.3.132.
220 Welcome to ABL FTP service.
User (172.16.3.132:(none)):
331 Please specify the password.

230 Login successful.
ftp> binary
200 Switching to Binary mode.
ftp> get Friday.bat
200 PORT command successful. Consider using PASV.
550 Failed to open file.
ftp> pause

最后,一个名为的文件Friday.bat被复制到我的本地系统,文件大小为 0 字节,我无法打开它。

答案1

我会检查您是否以提升权限的用户身份运行命令提示符,或者从您有写入权限的路径启动该命令。

如果此操作不起作用,最可能的原因(我认为正在发生)是您的防火墙阻止您下载文件。请尝试禁用它,然后重试。

答案2

您是否反对使用第三方工具,例如 wget.exe(Unix for Windows 工具)?(下载这里或者这里

为了使其更容易,您仍然可以使用脚本,只需一行代码即可快速下载单个文件或整个站点。

wget.exe --ftp-user=USERNAME --ftp-password=PASSWORD -Ofriday.bat 172.16.3.132

如果不在根目录中,请添加wget.exe -r对站点文件的递归扫描。您可以添加递归级别或跨主机。

只是一些值得思考的事情:如果您不必使用ftp.exe,防火墙和其他安全软件就不会有被动问题——wget 会完成所有的移植工作。

答案3

依靠这个答案我认为您要么验证了自己的身份不正确,要么缺乏读取该文件的权限。

除此之外,我建议你使用预计自动化交互式应用程序。这个工具确实很好用。考虑阅读本章熟悉它。如果这还不够,我向你保证,这是一个老的(稳定的)工具,网上有很多例子。

答案4

您是否尝试过使用 PASV (被动模式),正如错误所暗示的那样?被动模式可以帮助 FTP 客户端更好地绕过防火墙和 NAT 设备(路由器),因为主动模式会尝试打开一个端口供您发送数据(如果您在路由器后面,则此操作将会失败),而在被动模式下,您实际上是在吸收数据。

启用被动模式与二进制一样简单,您应该像这样进行:

@echo off
@ftp -i -s:"%~f0"&GOTO:EOF
open 172.16.3.132
mmftp
((((password entered here)))))
binary
passive
get Friday.bat 
pause

相关内容