← 手順一覧へ戻る
Power Automate Desktopファイル業務の流れ初心者向け

ファイルを1件ずつZIPに圧縮する(同名ZIPはスキップ)

専用フォルダーの練習用2ファイルを、別フォルダーへ1件ずつZIP圧縮します。元の拡張子を残す命名、既存ZIPのスキップ、0件とエラーの違いを図と表で確認します。

画面上の名前は、表示言語やバージョンによって異なる場合があります。Desktopの例は、フロー作成時に「Power Fx を有効にする」をオフにした標準構文です。Power Fx対応フローでは式・変数参照・インデックスの書き方が異なります。このページでは変数を %変数名% と表記します。出力変数の名前を入力する欄では、前後の % は付けません。

実行前に確認

  • 実行前に入力の2件と、別の出力フォルダーを確認してください。サブフォルダーは対象外です。この練習では出力先を他のフローや人が同時に変更しないでください。存在確認と作成の間の競合まで防ぐ仕組みではありません。
  • ZIP filesは既存ZIPを丸ごと置き換える操作ではなく、選んだファイルを追加し、ZIP内部に同名のファイルやフォルダーがあれば上書きする仕様です。この例では既存ZIPを検知したら圧縮を通らず、勝手に内容を変更しない構成にしています。
  • スキップは既存ZIPの中身が最新・完全である証明ではありません。失敗後の不完全なZIPも存在確認では区別できないため、内容の確認が必要です。保存先に書けない場合は権限を勝手に変更せず、利用できる練習場所を選びます。
  • ローカルの手動練習です。組織の利用ルールと契約を確認してください。クラウドから起動する場合や無人実行は、マシン接続・実行権利・ライセンスなどを別途確認する必要があります。
  • この説明は公式仕様に基づく設定例です。実際のPower Automate for desktopでは実行検証していません。

1使うアクション

  1. アクション 1フォルダー内のファイルを取得専用の入力フォルダー/*.txt;*.csv/サブフォルダーを含める=オフ
  2. アクション 2For eachFilesの各ファイルをCurrentFileへ
  3. アクション 3変数の設定ZipPath=C:\PA\個別ZIP\出力\%CurrentFile.Name%.zip
  4. アクション 4ファイルが存在する場合ZipPathが存在する:スキップを表示
  5. アクション 5Else既存ZIPがない場合だけ次の圧縮へ
  6. アクション 6ZIPファイルアーカイブ パス=ZipPath/圧縮するファイル=CurrentFile.FullName
  7. アクション 7End → End存在確認とFor eachを閉じる。エラーなら停止

図で見る処理のイメージ

概念図

同じreportという名前でも、元の拡張子ごと残して別々のZIPにします。直下の小さな練習ファイル2件だけを扱います。

  1. 入力2件

    report.txt と report.csv(元ファイルは残す)

  2. 1件ずつ命名

    拡張子を含むName+.zip → 出力フォルダー

  3. 既存を確認

    同名ZIPあり:スキップ/なし:圧縮

  4. 結果を照合

    各ZIPの中身を確認。失敗は停止して調査

結果の例

空の出力先なら2ファイルから2つのZIPを作る想定。再実行は既存2件を変更せずスキップします。

C:\PA\個別ZIP
├─ 入力
│  ├─ report.txt → そのまま残る
│  └─ report.csv → そのまま残る
└─ 出力(最初は空)
   ├─ report.txt.zip ← report.txt 1件
   └─ report.csv.zip ← report.csv 1件
同じ入力・出力先での分岐結果(期待例)
状況処理結果・次の確認
2件あり・出力は空2回圧縮2つのZIPの中身を確認
report.txt.zipだけ存在TXTはスキップ・CSVは圧縮既存TXT ZIPは変更しない
2つのZIPが存在2回スキップ元ファイル変更後も自動更新しない
入力0件For each本体は0回新規ZIPは0件
入力フォルダーがない/読めない一覧取得で失敗空の一覧と混同しない
圧縮中に失敗停止途中の出力を確認してから再開

図と表は練習用の期待例です。実際のフローを実行して確認した結果ではありません(PAD実機未実行)。

設定と処理を説明する模式図です。実際の設定画面や実行結果のスクリーンショットではありません。

2実際の設定内容

入力する値・操作手順を確認する10ステップの設定と確認方法
  1. 1

    準備:WindowsのPower Automate for desktopで、標準の %変数名% 記法を使う手動デスクトップフローを作ります。既存の権限で読み書きできる C:\PA\個別ZIP の下に「入力」と「出力」を自分で作成します。出力は最初は空にし、入力の配下には置きません。メール・Excel・クラウドコネクタへの接続は使いません。

  2. 2

    練習データ:入力フォルダー直下に report.txt(本文 DEMO)と report.csv(1行目は Code,Count、2行目は A,2)だけを作成します。拡張子を表示して名前を確認します。機密情報や本番ファイルは入れず、この2ファイル以外を追加しないでください。

  3. 3

    「フォルダー内のファイルを取得」を追加します。フォルダー=C:\PA\個別ZIP\入力、ファイル フィルター=*.txt;*.csv、サブフォルダーを含める=オフ、出力変数=Files。フィルターは正規表現ではなくワイルドカードです。実行をこの直後で止め、Filesが2件で両方のFullNameが準備したファイルであることを確認します。

  4. 4

    「For each」を追加し、反復処理を行う値=%Files%、現在の項目=CurrentFileとします。その内側に「変数の設定」を置き、変数=ZipPath、値=C:\PA\個別ZIP\出力\%CurrentFile.Name%.zip とします。Nameは拡張子を含む名前なので、report.txt.zipとreport.csv.zipに分かれます。NameWithoutExtensionでは両方report.zipになるので使いません。

  5. 5

    同じFor each内で「ファイルが存在する場合」を追加し、状態=存在する、ファイルパス=%ZipPath% とします。内側の「メッセージを表示」に「既存ZIPのためスキップ:%ZipPath%」を入れます。OKで閉じると次へ進みます。この分岐には圧縮を置きません。

  6. 6

    存在確認の「Else」側だけに[圧縮]の「ZIPファイル」(英語名 ZIP files)を置きます。アーカイブ パス=%ZipPath%、圧縮するファイル=%CurrentFile.FullName%、圧縮レベル=速度と圧縮の最適なバランス、パスワードとアーカイブ コメント=空欄です。Files全体や入力フォルダーを渡さず、現在の1ファイルだけを渡します。生成変数ZipFileは既定のままで構いません。

  7. 7

    存在確認のEnd、その外側のFor eachのEndを確認します。ZIPファイルの[エラー発生時]は失敗時にフローを停止する設定を保ち、エラーを無視して続行する設定にしません。出力先に同名フォルダーがある場合も正常なスキップと決めつけず、失敗として出力先を確認します。

  8. 8

    基本テスト:入力を確認してから最後まで実行します。出力にreport.txt.zipとreport.csv.zipができる想定です。各ZIPの中身を確認し、対応する元ファイルが1件だけ含まれ、内容が同じか確かめます。ZIP内部の階層表示は実環境で確認します。ZIPが存在するだけで正しく完了したと判断しません。元の2ファイルも残ります。

  9. 9

    再実行テスト:作成済みZIPをそのままにして再実行すると2件ともスキップを表示する想定です。元ファイルを編集しても既存ZIPは更新されません。最新化したいときは、この練習とは別の空の出力フォルダーを用意してパスを変更します。自動削除や上書きは追加しません。

  10. 10

    0件テスト:別の空の入力フォルダーを指定するとFiles.Countは0で、For eachの本体は0回、ZIPは作成されません。フォルダー不存在・権限不足・圧縮失敗は0件とは別です。途中で失敗した場合、それ以前のZIPが残る可能性があります。自動再試行せず、原因と既存の出力内容を確認してください。

Microsoft公式ページで確認する

設定を確認できる公式資料