我嘗試使用批次檔從我的 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 [...]
除非您打算ftp
在外出時使用 Windows,否則不需要選取標記的方塊。您需要成為管理員才能調整防火牆規則。
請注意,不幸的是,這將不允許當前下載繼續。您需要中止目前操作(通常使用Ctrl+ C)並重試。
不顯示防火牆彈窗
如果傳輸掛起並且沒有顯示防火牆規則彈出窗口,這很可能表示 Windows 的 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
從命令提示字元使用來顯示正確的路徑)。