最終的なフローがこちら
- フォルダー内のファイルを取得
- 変数の設定(連番をつけるため)
- For each
- ファイルの名前を変更する
- 変数を大きくする
ではひとつずつ見ていきましょう。
まずはファイル名を取得
最初に、フォルダ内のファイルを取得する必要があります。これには、“フォルダー内のファイルを取得”アクションを使用します。このアクションは、指定したフォルダ内のファイルのリストを取得します。
今回はこのような画像をまとめたフォルダがあるとします。フォルダー内のファイルを取得アクションを使う事で次の様なリストを作成することができます。
リストとは?
一般的なプログラミング用語と同様に、複数の要素を格納するためのデータ構造のことです。Power Automate Desktopでは、様々なアクションや操作によって生成された複数の要素のコレクションを指す際に、「リスト」という用語が使われます。
Power Automate Desktopでのリストは、通常、同種のデータをまとめて処理するために使用されます。たとえば、フォルダから取得したファイルのリスト、テーブル内の行のリスト、あるいは特定の条件に一致するメールのリストなどが考えられます。
リストは、Power Automate Desktopの操作において、反復処理やフィルタリング、変換などの操作を行う際に役立ちます。例えば、ファイルのリストを取得し、それぞれのファイルに対して特定の処理を行ったり、条件に基づいてリスト内の要素をフィルタリングしたりすることができます。
Power Automate Desktopのリストは、一連のアクションによって生成され、変更されることがあります。例えば、フォルダからファイルのリストを取得するアクションや、特定の条件に一致するメールのリストを取得するアクションなどがあります。
要するに、Power Automate Desktopにおける「リスト」とは、複数の要素をまとめて管理し、それらに対して操作を行うためのデータ構造のことです。
つまり今回の場合はファイルのパス(ファイルまでの場所)が複数格納された変数の事をリストと呼びます。
For eachを使う
つづいてFor eachをつかってリストから一つずつファイルを取り出し名前を変更していきます。
その前に、今回は画像を1枚ずつpicture_1のように名前を変更して連番をつけていきます。
なので連番を設定するための変数をFor eachの外で設定しておきます。
外で設定しないとFor eachがループするたびに設定値が初期値にもどります。
変数の設定で変数に初期値の1を設定しておきます。
これでpicture_の後に1から数字をつけるための準備ができました。
ファイルの名前を変更するアクションをFor eachの中で設定します。
- 名前を変更するファイル:For eachで設定される変数
- 名前の変更の方法:新しい名前を設定する
- 新しいファイル名:picture_%NewVar%
新しいファイル名を設定するときに、変数の設定でFor eachの外で設定した変数をつけてファイル名を変更します。
そして、変数を大きくするアクションを使い%NewVar%を1ずつ増加していきます。
これで次のファイル名には2がつくようになります。
できあがり
さて、このフローを実行するとこのように画像の名前の置き換えと連番付けができます。
大量のファイルがある場合など、とても便利ですので是非試してみてください。
ファイル名に連番をつける方法は様々ありますので、Power Automate Desktopを使わない方法など調べてみてもいいですね。
今回のフローのコードもおいておきますのでコピペして利用してみてください。
フォルダーの場所は自分で変更してください。
Folder.GetFiles Folder: $'''C:\\''' FileFilter: $'''*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Files=> Files
SET NewVar TO 1
LOOP FOREACH CurrentItem IN Files
File.RenameFiles.Rename Files: CurrentItem NewName: $'''picture_%NewVar%''' KeepExtension: True IfFileExists: File.IfExists.DoNothing RenamedFiles=> RenamedFiles
Variables.IncreaseVariable Value: NewVar IncrementValue: 1
END
コメント