まいど!福地です
今回のお題はコチラ!
「 所定のフォルダ内にファイルがあるかどうか、また存在した場合はフルパスを取得する 」
です!
よくあるのはファイルのループなんですが、そういえばディレクトリをループは聞いたことがないな・・・と思い、ちょいと挑戦してみました(‘ω’)
やりたいこと
今回の着地点ですが、「ファイルが格納されているフォルダのフルパスを取得」していきたいと思います!
以下のフォルダがあったとします↓
「 C社 」の中に以下のファイルがあります↓
このファイルが保存されているパスを取ってきたいと思います!ちゃんと取れると以下のようになります↓
C:\Users\s.fukuchi\Desktop\会社別\C社\C社_見積書.pdf
「こんなん、余裕じゃね?」と思いますよね?わかる人はすぐわかると思うのですが、私理解が乏しくてこんなところでも苦戦してしまいました( ;∀;)修業が足りんです🤦♂️
対象ファイルの設定
さあさあとりあえず実践あるのみ!の前に・・・
変数(Short Text)で「対象ディレクトリパス」「ファイル_フルパス」を作っておこう(^^)/
変数名は任意の名前で結構です。
変数が準備できましたら、今度は「 ループさせたいフォルダ 」までのディレクトリを変数「対象ディレクトリパス」にデフォルトで入れちゃいましょう!
ディレクトリを入れた後に「\」を忘れず入れてください!
次に「ファイル繰り返し」ステップを入れます↓
ステップの設定画面にて、「ディレクトリ名」を変数「対象ディレクトリパス」に設定し、「ファイル名のパターン」に「.*\.(jpg|JPG|jpeg|JPEG|png|PNG|pdf|PDF)」を入れます。「ファイル名をここに保存」には変数「ファイル_フルパス」を入れてください。
↓ここ重要です↓
「サブディレクトリを含める」にチェックを必ず入れてください!
ここにチェックを入れることでフォルダをループし、ファイルが入っているかをチェックしてくれます!
「 サブディレクトリを含める 」にチェックを忘れずに!
正規表現「.*\.()」
今回「ファイル名のパターン」に出てきた「.*\.(jpg|JPG|jpeg|JPEG|png|PNG|pdf|PDF)」ですが、前回出てきた正規表現の1つになります。
意味としては「()」内に記述した拡張子すべてに対応するという意味になります。
正規表現は僕はかなり苦手なんですが、これから徐々に慣れていければと思っています(というか、絶対必要なんで慣れないといけませんが笑)
僕なりの見解でザックリ説明しますと、「.*」はとにかくなんでもいい1文字がまったくないか、連続するかという意味になります。とにかくなんでもいい文字が連続すると言うのは、いろんな文字の連続と言うことになります。
次に続く「 \.(jpg|JPG|jpeg|JPEG|png|PNG|pdf|PDF) 」ですが、ここでは「.」以降の文字(今回は拡張子)を指定しており、「|」で区切ることで「or」の役割を果たしてくれます。
もし「間違ってるよ!」と思われましたら遠慮なくご指摘ください!勉強させていただきます!
取りたい値が入っているかの確認
ステップを進ませると変数「ファイル_フルパス」に値が入っていることを確認してください。ここではあえて「変数の割当」ステップを入れ、ちゃんと値が入っているか確認してみます↓
やりました!無事、取りたかった値が入ってますね!
他のフォルダにファイルが入っていたら、入っているファイルまでのフルパスを取ってきてくれますので、何かと便利です!
更に、前回の正規表現と組み合わせることでファイル名も拾えますので、活用の幅も広がりますね(^^♪
いやー、たった1つのステップで完結できるなんてビックリです笑
以上、地味に調べても出てきづらい内容の紹介でした!
今後も絶妙な内容を投稿していければと思いますので、どうぞ宜しくお願い致しますm(_ _)m
コメント