Ribbit.work

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

RPAPower Automate Desktop

last modified date2021-7-13

publish date2021-7-12

エクスプローラーの通常機能を使用すると、特定のフォルダを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開発のお役に立てれば幸いです。

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

この記事を読んだ方におすすめの記事

要素を取得しているのに「表示するUI要素はありません」と表示される場合の対処法

Power Automate DesktopRPA
2021-7-2

Power Automate Desktopを使って、Chatworkへメッセージを送信する

Power Automate DesktopRPA
2021-7-1