フォルダの中にあるファイルを取得して順番に処理するサブルーチンシナリオ
全体イメージはこんな感じ、参考にしてみてね。
1.サブルーチンを作る。
ローカル変数に変数「検索フォルダ」を指定する。
2.ライブラリ「ファイル一覧(ファイル数)取得」
- フォルダ名に「検索フォルダ」
- ファイル数に「フォルダ内のファイル数」
を指定する。
3.ノード「繰り返し」
- 回数に「フォルダ内のファイル数」
- カウンタに「ループインデックス」
を指定する。
4.ノード「四則演算」
- 「ファイルカウンタ」 = 「ループインデックス」 「ー」 「値⇒ 1」
を指定する。
5.ライブラリ「ファイル一覧(ファイル名)取得」
- フォルダ名に「検索フォルダ」
- カウンタに「ファイルカウンタ」
- ファイル名に「検索ファイル」
- 種別に「IsFile」
を指定する。
※ 「ループインデックス」と「ファイルカウンタ」は、繰り返しのカウンタが1から数えるカウンタなのに対し、ライブラリのファイル一覧で使うインデックスが0から数えるカウンタなので、-1して使う必要があるということです。
6.ノード「分岐」
- 条件に「IsFile」 「等しい」 「値⇒ true」
を設定する。
7.ノード「サブルーチン呼び出し」
これは、サブフォルダは検索しない時は使わなくていい。
- サブルーチンに「1.」で作ったサブルーチン
- 検索フォルダに「検索ファイル」
を設定する。
これで、サブフォルダに対して繰り返し処理ができるようになる。
これで、フォルダの中のファイルに対してのみ
「何かの処理」ノードを実行するシナリオができました。
こんにちは。だいぶ前の記事にコメント失礼します。
こちらのシナリオを参考にさせていただきました。ありがとうございます。
一点疑問があります。
こちらのシナリオだと、サブフォルダが2つ以上あった場合に、サブフォルダ2つ目以降の中身は処理できるのでしょうか?
確認が遅くなってすみません?コメント頂いてたのに気付きませんでした。
問題なくサブフォルダが複数・多階層でも探索できます。
ただ、1点気を付けなければいけないのは、このサンプルではインデックスを加算しながら探索するのでループ処理の中あるいは同時に別操作でフォルダの中のファイルを削除してしまった場合、カウンタとインデックスが合わなくなるのでエラーが発生します。
ファイルを削除したい場合は、インデックス最大値のファイルから逆方向に探索するのがよいでしょう。