本教學的目標

將本機活頁簿送入 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: queueddata.transfer_id。將此 ID 儲存為 TRANSFER_ID;受理不等於完成。

rdp-cli files status --session SESSION --transfer-id TRANSFER_ID

在狀態回應中讀取 data.state,核對 data.bytes_transferreddata.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 檢查已知傳輸,不要立刻重複結果不明的上傳或覆寫。
  • failedpartialcancelled 查看逐檔結果及原因,已完成的檔案可能仍在。斷線或失去檔案權限可能停止傳輸,新連線不會自動續傳。
  • 路徑無效: 使用正斜線分隔的交換磁碟相對路徑;絕對路徑、..、不安全的連結與衝突名稱會遭拒絕。

停止已知傳輸時,使用實際 ID,並繼續查詢最終狀態:

rdp-cli files cancel --session SESSION --transfer-id TRANSFER_ID

暫停桌面輸入不會取消檔案傳輸。completed 證明位元組複製完成,不能證明遠端應用程式產生了正確報表。

繼續完成真實遠端任務

LibreOffice Calc 案例採用相同的「上傳→遠端編輯→下載」流程,提供實際儲存的報表、原始螢幕擷取、公式及核對過的加總值。套用到其他環境前,請先閱讀檔案能力與通訊協定限制