特定のフォルダ内のファイルをファイル名順で処理したい

【質問】
特定のフォルダ内のファイルを、サブフォルダ内のファイルも含めて全てループで処理したい。
なお、この際、ファイルの格納されているフォルダに関わらず、ファイルの名前のみで昇順でソートして
順番に処理したい。
対象のファイルは、全て半角数字3桁から始まっている。

【回答】
方策としては:
1. 「ファイルシステム - 情報の取得」アクションで、
対象のフォルダ内のファイル情報をデータセット化(サブフォルダ含む)
フォルダのパスは%var_FolderPath%とする。
<AMFILESYSTEM ACTIVITY="get" SOURCE="%var_FolderPath%" RESULTDATASET="dataset_Files" FILEPROPERTY="fullname" SUBFOLDERS="YES" />

2. 1のデータセットでループ「Loop - Dataset」 ソート対象列は「Filename」でアルファベット昇順を指定
(Filenameはパス情報を含まないファイル名、Fullnameはフルパス)
<AMLOOP ACTIVITY="dataset" DATASET="dataset_Files" SORT="ascending" SORTEDCOLUMN="Filename" />

3. 処理
ファイル参照の際は%dataset_Files.Fullname%を使用するか、その値を変数に格納して使用する

4. End Loop
となります。

上記の例において、「Loop - ファイル」を使用しておらず、またソート対象列に「Fullname」を使用していない理由は以下です。
以下のようなファイル構成になっている場合
\04管理\089_対象.xlsx
\000_対象.xlsx
\051_対象.xlsx
「000_対象.xlsx」→「089_対象.xlsx」→「051_対象.xlsx」
の順にファイルが処理されます。
理由としては、「Loop - ファイル」の「ファイル名」によるソートはフルパス準拠で行われているため、
「\051_対象.xlsx」よりも「\04管理\089_対象.xlsx」の方が
昇順にした際に上になるためです。

今回の場合は、フルパスによらずファイル名のみでソートして順にファイルを処理する意図である為
先に「ファイルシステム - 情報の取得」で対象ファイルの情報を一挙に取得してから、
フルパスを含まないファイル名でソートする方策となります。

Knowledge記事検索

Knowledge

News・Information