ファイルを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フォルダー内のファイルを取得専用の入力フォルダー/*.txt;*.csv/サブフォルダーを含める=オフ
- アクション 2For eachFilesの各ファイルをCurrentFileへ
- アクション 3変数の設定ZipPath=C:\PA\個別ZIP\出力\%CurrentFile.Name%.zip
- アクション 4ファイルが存在する場合ZipPathが存在する:スキップを表示
- アクション 5Else既存ZIPがない場合だけ次の圧縮へ
- アクション 6ZIPファイルアーカイブ パス=ZipPath/圧縮するファイル=CurrentFile.FullName
- アクション 7End → End存在確認とFor eachを閉じる。エラーなら停止
図で見る処理のイメージ
概念図同じreportという名前でも、元の拡張子ごと残して別々のZIPにします。直下の小さな練習ファイル2件だけを扱います。
入力2件
report.txt と report.csv(元ファイルは残す)
1件ずつ命名
拡張子を含むName+.zip → 出力フォルダー
既存を確認
同名ZIPあり:スキップ/なし:圧縮
結果を照合
各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
準備:WindowsのPower Automate for desktopで、標準の %変数名% 記法を使う手動デスクトップフローを作ります。既存の権限で読み書きできる C:\PA\個別ZIP の下に「入力」と「出力」を自分で作成します。出力は最初は空にし、入力の配下には置きません。メール・Excel・クラウドコネクタへの接続は使いません。
- 2
練習データ:入力フォルダー直下に report.txt(本文 DEMO)と report.csv(1行目は Code,Count、2行目は A,2)だけを作成します。拡張子を表示して名前を確認します。機密情報や本番ファイルは入れず、この2ファイル以外を追加しないでください。
- 3
「フォルダー内のファイルを取得」を追加します。フォルダー=C:\PA\個別ZIP\入力、ファイル フィルター=*.txt;*.csv、サブフォルダーを含める=オフ、出力変数=Files。フィルターは正規表現ではなくワイルドカードです。実行をこの直後で止め、Filesが2件で両方のFullNameが準備したファイルであることを確認します。
- 4
「For each」を追加し、反復処理を行う値=%Files%、現在の項目=CurrentFileとします。その内側に「変数の設定」を置き、変数=ZipPath、値=C:\PA\個別ZIP\出力\%CurrentFile.Name%.zip とします。Nameは拡張子を含む名前なので、report.txt.zipとreport.csv.zipに分かれます。NameWithoutExtensionでは両方report.zipになるので使いません。
- 5
同じFor each内で「ファイルが存在する場合」を追加し、状態=存在する、ファイルパス=%ZipPath% とします。内側の「メッセージを表示」に「既存ZIPのためスキップ:%ZipPath%」を入れます。OKで閉じると次へ進みます。この分岐には圧縮を置きません。
- 6
存在確認の「Else」側だけに[圧縮]の「ZIPファイル」(英語名 ZIP files)を置きます。アーカイブ パス=%ZipPath%、圧縮するファイル=%CurrentFile.FullName%、圧縮レベル=速度と圧縮の最適なバランス、パスワードとアーカイブ コメント=空欄です。Files全体や入力フォルダーを渡さず、現在の1ファイルだけを渡します。生成変数ZipFileは既定のままで構いません。
- 7
存在確認のEnd、その外側のFor eachのEndを確認します。ZIPファイルの[エラー発生時]は失敗時にフローを停止する設定を保ち、エラーを無視して続行する設定にしません。出力先に同名フォルダーがある場合も正常なスキップと決めつけず、失敗として出力先を確認します。
- 8
基本テスト:入力を確認してから最後まで実行します。出力にreport.txt.zipとreport.csv.zipができる想定です。各ZIPの中身を確認し、対応する元ファイルが1件だけ含まれ、内容が同じか確かめます。ZIP内部の階層表示は実環境で確認します。ZIPが存在するだけで正しく完了したと判断しません。元の2ファイルも残ります。
- 9
再実行テスト:作成済みZIPをそのままにして再実行すると2件ともスキップを表示する想定です。元ファイルを編集しても既存ZIPは更新されません。最新化したいときは、この練習とは別の空の出力フォルダーを用意してパスを変更します。自動削除や上書きは追加しません。
- 10
0件テスト:別の空の入力フォルダーを指定するとFiles.Countは0で、For eachの本体は0回、ZIPは作成されません。フォルダー不存在・権限不足・圧縮失敗は0件とは別です。途中で失敗した場合、それ以前のZIPが残る可能性があります。自動再試行せず、原因と既存の出力内容を確認してください。
- 対象環境
- Power Automate for desktop(Windows・手動実行)
- 更新日
- 2026年10月17日