本教學的目標
將本機活頁簿送入 RDP 工作階段,再原樣取回,核對傳輸狀態與 SHA-256;接著可用相同流程取回遠端應用程式儲存的成果。步驟依據 rdp-cli 0.1.0 命令介面及 2026 年 9 月 21 日已驗證的檔案工作流程整理,屬於重現指引,不表示本次重新執行實測。
準備工作階段與範例檔案
下載適合本機的版本,按快速入門連線至獲授權的 Windows RDP 伺服器。儲存回傳的 data.session,替換下文的 SESSION。伺服器必須允許磁碟機重新導向,呼叫端也須具備檔案權限;VNC 不提供此交換磁碟。
每個工作階段有獨立的交換目錄。--path 是相對於此目錄的路徑,並非 C:\Users\... 等任意 Windows 磁碟路徑。遠端應用程式透過重新導向的磁碟機存取它。CLI 檔案操作不要求開啟檢視器或接管遠端鍵盤滑鼠。
把範例活頁簿儲存到本機目前目錄,檔名為 service-activity.xlsx,共 4,489 位元組,包含 12 個月的虛構服務資料。範例假設 PATH 中有 rdp-cli;Windows 請在 EXE 目錄改用 .\rdp-cli.exe,Linux 可用已安裝的命令或 ./rdp-cli-linux-x86_64 / ./rdp-cli-linux-arm64。
rdp-cli status --session SESSION
rdp-cli files list --session SESSION
確認工作階段已連線,並核對協商能力及清單回應。檔案能力不可用時,先檢查伺服器原則或存取授權。
上傳後查詢完成狀態
rdp-cli files upload --session SESSION --local ./service-activity.xlsx --path service-activity.xlsx
成功受理可能回傳 data.state: queued 與 data.transfer_id。將此 ID 儲存為 TRANSFER_ID;受理不等於完成。
rdp-cli files status --session SESSION --transfer-id TRANSFER_ID
在狀態回應中讀取 data.state,核對 data.bytes_transferred 與 data.total_bytes,並在 data.files[].sha256 查看已完成檔案的雜湊。
重複查詢直到終止狀態。只有 completed、預期的 4,489 位元組與檔案雜湊均正確時才繼續。遠端應用程式此時可從該工作階段重新導向的磁碟機開啟活頁簿;僅看見檔名不能證明傳輸完成。
下載並核對取回的內容
第一次往返先不要修改活頁簿:
rdp-cli files download --session SESSION --path service-activity.xlsx --local ./service-activity-returned.xlsx
下載會回傳自己的 data.transfer_id,請用新的 ID 依上文查詢 files status。出現 completed 後,本機結果為 service-activity-returned.xlsx。macOS 可比較兩個檔案:
shasum -a 256 ./service-activity.xlsx ./service-activity-returned.xlsx
Linux 使用:
sha256sum ./service-activity.xlsx ./service-activity-returned.xlsx
Windows PowerShell 使用:
Get-FileHash -Algorithm SHA256 .\service-activity.xlsx, .\service-activity-returned.xlsx
兩個雜湊都應為 1869e5708fe8922a99ff3efee1c0d285df3dd94588d59f5ad48f282db915df51。若已在遠端編輯活頁簿,就不再預期與原檔相同:將成果存入交換磁碟,下載其結果路徑,再核對實際內容。
傳輸整個目錄
在本機準備名為 source-folder 的目錄,放入要傳送的檔案:
rdp-cli files upload --session SESSION --local ./source-folder --path source-folder
等待該次上傳完成,再下載:
rdp-cli files download --session SESSION --path source-folder --local ./received-folder
分別查詢每次傳輸。目錄結構與空目錄會保留;./received-folder 是完整的目標根目錄。目錄傳輸逐一完成檔案,因此 partial 或取消後可能留下已完成的檔案,整個目錄樹並非一次不可分割的交易。
失敗時先釐清狀態
- 目的檔已存在: 改用其他路徑;確定要取代時才加入
--overwrite,預設不覆寫。 FILE_BUSY: 讓遠端應用程式完成儲存或匯出,檢查檔案與傳輸狀態後再決定重試。- 受理回應遺失: 用
rdp-cli files status --session SESSION檢查已知傳輸,不要立刻重複結果不明的上傳或覆寫。 failed、partial或cancelled: 查看逐檔結果及原因,已完成的檔案可能仍在。斷線或失去檔案權限可能停止傳輸,新連線不會自動續傳。- 路徑無效: 使用正斜線分隔的交換磁碟相對路徑;絕對路徑、
..、不安全的連結與衝突名稱會遭拒絕。
停止已知傳輸時,使用實際 ID,並繼續查詢最終狀態:
rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID
暫停桌面輸入不會取消檔案傳輸。completed 證明位元組複製完成,不能證明遠端應用程式產生了正確報表。
繼續完成真實遠端任務
LibreOffice Calc 案例採用相同的「上傳→遠端編輯→下載」流程,提供實際儲存的報表、原始螢幕擷取、公式及核對過的加總值。套用到其他環境前,請先閱讀檔案能力與通訊協定限制。