我尝试使用批处理文件从 ftp 服务器获取文件。结果如下:
ftp> open files.000webhost.com 21
Connected to us-east-1.route-1000.000webhost.awex.io.
220 ProFTPD Server (000webhost.com) [::ffff:145.14.145.124]
500 OPTS UTF8 not understood
User (us-east-1.route-1000.000webhost.awex.io:(none)):
331 User ***** OK. Password required
230-Your bandwidth usage is restricted
230 OK. Current restricted directory is /
ftp> lcd C:\Users\micah\Desktop\MiniventureLauncher\Game
Local directory now C:\Users\micah\Desktop\MiniventureLauncher\Game.
ftp> cd public_html
250 OK. Current directory is /public_html
ftp> binary
200 TYPE is now 8-bit binary
ftp> recv miniventure.jar
200 PORT command successful
150-Connecting to port 50186
150 13336.1 kbytes to download
然后它就停止了。这是我的批处理文件中的代码:
@Echo Off
Set _FTPServerName=files.000webhost.com 21
Set _UserName=*****
Set _Password=*****
Set _LocalFolder=C:\Users\micah\Desktop\MiniventureLauncher\Game
Set _RemoteFolder=public_html
Set _Filename=miniventure.jar
Set _ScriptFile=transfer
:: Create script
>"%_ScriptFile%" Echo open %_FTPServerName%
>>"%_ScriptFile%" Echo %_UserName%
>>"%_ScriptFile%" Echo %_Password%
>>"%_ScriptFile%" Echo lcd %_LocalFolder%
>>"%_ScriptFile%" Echo cd %_RemoteFolder%
>>"%_ScriptFile%" Echo binary
>>"%_ScriptFile%" Echo recv %_Filename%
>>"%_ScriptFile%" Echo quit
:: Run script
ftp -s:"%_ScriptFile%"
Del "%_ScriptFile%"
它连接到服务器,但不会下载文件。
答案1
正如@martin-prikryl 在评论中所说,这几乎肯定是 Windows 防火墙问题。
虽然 Windowsftp
无需特殊权限即可连接到远程主机,但要下载文件,传入的远程传输需要通过 Windows 防火墙明确允许。
允许传入传输
如果 Windows 没有 Windows 防火墙规则ftp
,则当您使用该命令运行它时recv
,系统应提示您自动将传入规则添加到 Windows 防火墙。标记的框Private networks [...]
应默认选中。按允许访问按钮将适当的规则添加到您的 Windows 防火墙。
例如,允许通过 Windows ftp.exe 下载
Public networks [...]
除非您打算在外出时使用 Windows,否则您不需要选中标记的复选框ftp
。您需要成为管理员才能调整防火墙规则。
请注意,不幸的是,这将不允许当前下载继续。您需要中止当前操作(通常使用Ctrl+ C)并重试。
不显示防火墙弹出窗口
如果传输挂起且未显示任何防火墙规则弹出窗口,这很可能意味着 Windows 防火墙中已经存在规则ftp
(即使您最初按取消在上面的对话框中)。此外,这些规则可能被设置为阻止任何传入连接(用带有斜线的圆圈图标表示)。
例如,Windows ftp.exe 被 Windows 防火墙阻止
要改变这一点:
打开控制面板\系统和安全\Windows 防火墙并点击标记的链接高级设置在左手侧。
在里面高级安全 Windows 防火墙对话框(如上所示),单击入境规则链接并等待主窗格填充。查找标记的两个规则文件传输程序。您可以点击姓名根据需要,类别标题按字母顺序对项目进行排序。
对于每条规则,右键单击并选择特性。 在下面一般的选项卡,更改行动从
Block the connection
到Allow the connection
。按好的完成后,位于对话框的底部。例如,更新 Windows ftp.exe 的 Windows 防火墙规则
如果操作正确,带斜线的圆圈图标应该被绿色复选标记取代。
例如,Windows ftp.exe 的 Windows 防火墙规则 - 绿色复选标记
创建自己的规则
如果您希望手动添加(创建)这些规则,请继续执行步骤 1 和 2,但单击新规则……在右侧选择入境规则。
为 TCP 连接制定一条规则,为 UDP 连接制定一条规则(协议选项列在协议和端口选项卡)。确保所有端口是允许的。调整范围选项卡属性(通常设置为任何 IP 地址)和先进的标签个人资料(通常只是Private
)根据需要。
最后,根据项目和服务选项卡,将例如C:\windows\system32\ftp.exe
作为程序路径(如果有疑问,您可以where ftp
从命令提示符中使用来显示正确的路径)。