Ribbit's works

まとめてではなく1件ずつファイルをzipに圧縮する【Power Automate Desktop】

#RPA #Power Automate Desktop
にメンテナンス済み
記事のトップ画像

エクスプローラーの通常機能を使用すると、特定のフォルダを zip 形式に圧縮することができます。

ただ、ファイルを 1 件 1 件圧縮したい場合は、それぞれ zip への圧縮を指示していかなければならないため、件数が多くなると手間がかかってしまいます。

今回は特定のフォルダ内のファイルを 1 件ずつ圧縮する方法を紹介します。

デモ環境

今回圧縮対象とするのは以下のフォルダです。直下にフォルダ、テキスト、画像がそれぞれ 3 つずつ存在しています。

pad-zip1

Power Automate Desktop のフロー紹介

ファイル一覧を取得

まずアクション一覧から、

フォルダー > フォルダー内のサブフォルダを取得

を選択します。

設定するパラメータは以下の通りです。

pad-zip2
パラメーター名内容
フォルダーC:\power-automate-test
ファイルフィルター*

フォルダーには圧縮したいファイルが格納されているフォルダーを指定します。 ファイルフィルターは初期状態の「*」を設定することで、フォルダー直下の全てのファイルが対象となります。 特定のファイルのみを対象としたい場合は、後述するフィルターの設定を行ってください。

特定のファイルのみ対象とする

対象フォルダの特定のファイルのみ圧縮したい場合は、先ほどのアクションのファイルフィルターを設定します。

pad-zip5

指定には正規表現を使用します。

テキストファイルのみを指定する場合は、添付ファイルのように指定します。

ファイルを 1 件ずつループする

アクション一覧から、

ループ > For Each

を選択します。

pad-zip2.5
パラメーター名内容
反復処理を行う値%Files%
生成された変数%File%

反復処理を行う値に先ほど「フォルダー内のサブフォルダを取得」で取得した変数を設定します。

生成された変数は初期状態の「CurrentItem」でも問題ありませんが、変数が何を保持しているのかわかるように「File」に変更しておきます。

ファイルを圧縮する

圧縮 > ZIP ファイル

からアクションを選択し、以下のパラメータを設定します。

pad-zip3
パラメーター名内容
アーカイブ パス%File%.zip
圧縮するファイル%File%
圧縮レベル速度と圧縮の最適なバランス
パスワード
アーカイブ コメント

アーカイブパスは圧縮されたファイル名です。今回は元のファイルの後ろに.zip を付けるよう指定しています。 圧縮するファイルは対象のファイルパスを指定するので、For each で取得した変数 File を設定します。 その他圧縮レベル、パスワード、アーカイブ コメントは任意の値を設定してください。

フローの全容

最終的にフローは以下のようになります。簡単ですね。

pad-zip6

実行結果

上記までで作成したスクリプトを実行すると、フォルダはこのようになります。

pad-zip4

ちゃんとファイルだけ、1 件ずつ圧縮できてますね。

みなさんの RPA 開発のお役に立てれば幸いです。

最後まで読んでいただき、ありがとうございました!