FTP 指令:用戶端與協定參考

所有 FTP 指令一次整理:你在 Windows ftp.exe、macOS 或 Linux 中輸入的命令列用戶端指令(get、put、mget、bye),以及它們在傳輸時轉換成的原始 RFC 959 協定指令。

2026 年 7 月更新

命令列 FTP 用戶端指令

這些指令適用於 Windows(ftp.exe)、macOS 與 Linux 內建的互動式 FTP 用戶端。用 ftp hostname 開始一個工作階段(或在 ftp> 提示字元下輸入 open hostname),接著使用下列指令。完整的 Windows 教學與腳本寫法,請參考 在 Windows 上從命令列使用 FTP 這篇指南。

工作階段與連線

指令用途範例
open連線到 FTP 伺服器(會提示輸入使用者名稱與密碼)。open ftp.example.com
user在目前的連線上重新登入,或改用其他使用者登入。user alice
close / disconnect結束與伺服器的連線,但仍留在 FTP 程式中。close
bye / quit關閉連線並離開 FTP 程式。bye
status顯示目前的工作階段設定(模式、類型、各項切換)。status
!切換到本機 shell;輸入 exit 即可回到 ftp>。!dir

下載與上傳

指令用途範例
get / recv從伺服器下載一個檔案。get report.pdf
put / send上傳一個檔案到伺服器。put backup.zip
mget下載多個檔案(可使用萬用字元)。mget *.log
mput上傳多個檔案(可使用萬用字元)。mput *.html
append把本機檔案附加到伺服器上某個檔案的後面。append part2.txt log.txt
delete刪除伺服器上的一個檔案。delete old.bak
mdelete刪除伺服器上的多個檔案(可使用萬用字元)。mdelete *.tmp
rename重新命名伺服器上的檔案。rename a.txt b.txt

瀏覽目錄

指令用途範例
dir / ls列出目前遠端目錄中的檔案。dir
cd切換遠端目錄。cd /public_html
lcd切換傳輸時使用的本機目錄。lcd C:\Downloads
pwd顯示目前的遠端目錄。pwd
mkdir在伺服器上建立目錄。mkdir images
rmdir移除伺服器上的空目錄。rmdir old-site

傳輸設定與切換

指令用途範例
binary切換到二進位(image)模式,適用於 zip、圖片、執行檔與媒體檔。下載非文字檔之前,一定要先設定這個模式。binary
ascii切換到 ASCII 文字模式(會轉換換行字元)。許多用戶端預設使用此模式。ascii
prompt切換 mget/mput/mdelete 是否逐一確認每個檔案。prompt
hash每傳輸一個區塊就印出一個 #,算是陽春版的進度列。hash
verbose切換是否顯示伺服器的回應。verbose
literal / quote直接把原始協定指令(見下表)送到伺服器。literal SYST
remotehelp詢問伺服器支援哪些協定指令。remotehelp
help / ?列出用戶端指令,或說明其中某一個指令。help mget

典型的工作階段

C:\> ftp ftp.example.com
Connected to ftp.example.com.
User: alice
Password: ********
ftp> binary
200 Type set to I.
ftp> cd /backups
250 CWD command successful.
ftp> hash
Hash mark printing On.
ftp> get site-backup.zip
226 Transfer complete.
ftp> mput *.log
mput access.log? y
226 Transfer complete.
ftp> bye
221 Goodbye.

要改用 SSH 嗎?OpenSSH 的 sftp 用戶端使用一套類似但不同的指令,請見 SFTP 指令參考。如果伺服器根本無法連線,請先用 FTP 連線測試工具 排除網路問題。

原始 FTP 協定指令(RFC 959)

這些是 FTP 用戶端實際透過控制連線送出的指令:閱讀伺服器記錄、用 literal/quote 偵錯,或自己實作 FTP 時都派得上用場。可以搜尋,也可以依類別篩選。

關於 FTP 指令

FTP 協定指令由用戶端透過控制連線(預設為連接埠 21)送到伺服器,伺服器再以 3 位數的狀態碼回應。核心協定定義於 RFC 959,擴充部分則定義於 RFC 2228、2389、2640、3659 與 4217。

想知道伺服器回應代碼代表什麼嗎?請使用 FTP 回應代碼查詢 工具。

常見問題

Windows 11 還內建 ftp.exe 嗎?

有。傳統的命令列 FTP 用戶端仍內建於 Windows 11 與 Windows 10:開啟命令提示字元或 PowerShell,輸入 ftp 就能啟動。它只支援一般的 FTP,所以無法連線到 SFTP 或 FTPS 伺服器。

為什麼 ftp.exe 在防火牆或路由器後面會失敗?

Windows 的 ftp.exe 只支援主動模式,也就是每次傳輸資料時,都由伺服器反向連回你的電腦。大多數家用路由器與企業防火牆都會擋下這些連入連線,所以登入之後,目錄清單與傳輸就會卡住。支援被動模式(PASV)的用戶端,包括幾乎所有圖形化的 FTP 用戶端,都能避開這個問題。

FTP 用戶端指令和 FTP 協定指令有什麼不同?

get、put、mget、bye 這類用戶端指令,是你在命令列 FTP 程式中輸入的指令。程式會把它們轉換成 RFC 959 定義的原始協定指令(RETR、STOR、PASV、QUIT),真正在網路上傳給伺服器的是這些協定指令。例如輸入 get report.pdf,背後送出的是 TYPE I、PASV 或 PORT,以及 RETR report.pdf。

ftp.exe 可以連線到 SFTP 或 FTPS 伺服器嗎?

不行。Windows 的 ftp.exe 只支援一般、未加密的 FTP。若要使用 SFTP,你需要 OpenSSH 的 sftp 指令(Windows 10 與 11 也有內建),或是支援 SFTP 的用戶端。若要使用 FTPS(透過 TLS 的 FTP),則需要支援顯式或隱式 TLS 的用戶端,而 ftp.exe 兩者都不支援。

如何在 Windows 上用腳本執行 FTP 傳輸?

把指令寫進一個文字檔,每行一個,再執行 ftp -s:commands.txt hostname。這個檔案通常以分行寫出的使用者名稱與密碼開頭,接著是 binary、get 或 put、bye 這類傳輸指令。請注意密碼是以純文字儲存,連線也沒有加密,所以排程或無人值守的工作,更適合交給支援 SFTP/FTPS 並具備真正排程器的工具。

不想死背指令嗎?

FTPie 是一套現代化的 Windows FTP 與 FTPS 用戶端,支援拖放傳輸、能順利穿越防火牆的被動模式,還在同一個程式裡整合了 SFTP、WebDAV 與 10 多種雲端服務,最多 3 個伺服器連線免費。

免費下載 FTPie