このガイドの目的

ローカルのブックを 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 の事例では、同じアップロード→リモート編集→ダウンロードを使います。実際に保存したレポート、元のスクリーンショット、数式、検証した合計を確認できます。別環境で使う前にファイル機能とプロトコルの制限を参照してください。