这篇教程要完成什么

把本机工作簿送入 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 案例使用相同的“上传→远端编辑→下载”流程,提供实际保存的报表、原始截图、公式和核验汇总值。迁移到其他环境前,先查阅文件能力与协议限制