![将文件从 ftp 传输到本地系统](https://linux22.com/image/1296115/%E5%B0%86%E6%96%87%E4%BB%B6%E4%BB%8E%20ftp%20%E4%BC%A0%E8%BE%93%E5%88%B0%E6%9C%AC%E5%9C%B0%E7%B3%BB%E7%BB%9F.png)
我想从 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
答案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