指定フォルダー直下の構成を複製する

PowerAutomateDesktopを利用して、指定したフォルダー直下のフォルダー構成を複製するフローです

Display.SelectFolder Description: $'''複製をするフォルダーの選択''' IsTopMost: True SelectedFolder=> SelectedFolder ButtonPressed=> ButtonPressed
IF ButtonPressed <> $'''OK''' THEN
    EXIT Code: 0
END
Folder.GetSubfolders Folder: SelectedFolder FolderFilter: $'''test*''' IncludeSubfolders: False FailOnAccessDenied: True SortBy1: Folder.SortBy.NoSort SortDescending1: False SortBy2: Folder.SortBy.NoSort SortDescending2: False SortBy3: Folder.SortBy.NoSort SortDescending3: False Subfolders=> Folders
Folder.GetSpecialFolder SpecialFolder: Folder.SpecialFolder.DesktopDirectory SpecialFolderPath=> SpecialFolderPath
Folder.Create FolderPath: SpecialFolderPath FolderName: $'''作成用フォルダー''' Folder=> NewFolder
LOOP FOREACH CurrentItem IN Folders
    Folder.Create FolderPath: NewFolder FolderName: CurrentItem.Name
END
System.RunApplication.RunApplication ApplicationPath: $'''explorer''' CommandLineArguments: NewFolder WindowStyle: System.ProcessWindowStyle.Normal

フォルダーの選択で指定したフォルダーの直下にあるフォルダ構成をデスクトップに複製するフローです
年や月などで、同じ構成のフォルダーを作成する場合に利用します
例えば、毎月月初に担当者ごとのフォルダを作成するとか、顧客ごとのフォルダを作成するという場合です
前提として、フォルダーの中身は複製しませんので階層構造になっているフォルダーも複製は行いません
このフローの前提として、直下フォルダの構成以外は新規で利用することを想定しているからです

フロー解説

1行目:フォルダーの選択ダイアログを表示
2~4行目:IFによる選択キャンセル時のフロー終了
1~4行目のアクション

1行目は構成を複製するフォルダーを指定するためのダイアログ表示のアクションとなっています
ここで選択したフォルダーの直下にあるフォルダーを複製することになります

2~4行目は、そのダイアログで選択をキャンセルした場合の終了処理になっています
これが無いと後続で未選択時にエラーが発生します

5行目のアクション
「フォルダー内のサブフォルダーを取得」アクションの設定画面の画像
設定画面

5行目は指定したフォルダーの直下にあるフォルダーを全て取得するアクションです
ここで「フォルダーフィルター」という項目を設定することで、任意のフォルダーに制限をかけることが可能となります
例えば、直下にあるフォルダーのうちでも特別に作成したフォルダーであり複製は不要なフォルダーがある場合は、その名前で除外を行うことが可能となります
ただ所詮は名前の文字列だけでしかないので複雑な判定が必要な場合は、初期値の「*」だけにして全てを複製してから手動で削除対応を行う形となります
例の場合で言えば、「test」で始まるフォルダーを対象としています

ちなみにこの項目のうち、サブフォルダーを含めるをオンにした場合は
直下以降の階層構造全てを複製の対象には出来ますが、あまり不要かと思いますので例コードではオフとしています

6行目:特別なフォルダーを取得
7行目:フォルダーの作成
6~7行目のアクション

6行目では複製フォルダーの保存先としてデスクトップを対象とするため、デスクトップのパスを取得しています

7行目で複製フォルダーの格納用フォルダーを作成しています
同名フォルダーがあった場合は何も起きません
基本的にはここで複製したものは移動する前提のため、デスクトップに同じ名称のフォルダーは存在しない想定です

8~10行目のループによるフォルダー作成のアクション画像
8~10行目のアクション

8行目と10行目はループ処理のアクションとなっています
ここで取得したサブフォルダーの要素を全てループしています

9行目でサブフォルダーの名前で新規にフォルダーを作成して、デスクトップの作成用フォルダーの中に保管をしています
これをループにより、取得したサブフォルダーの個数分処理します

作成用フォルダーを開くアクションの画像
11行目のアクション

11行目はデスクトップに作成した作成用フォルダーをエクスプローラーで開くアクションです
デスクトップに作成しているので、探す必要はほぼ無いので蛇足のアクションではありますので削除しても問題はありません
こちらのアクションについては以下の記事で解説を行っています