フォルダ内の指定した拡張子のファイルのみ取得する

.NET関数を使用する方法


GetFiles関数でも条件を指定することができますが、こちらの記事にあるように条件によってはうまく抽出できない場合があります。

異なるアプローチとして、GetFiles関数でフォルダ内の全てのファイルを配列として取得し、その配列に対して特定条件のファイルのみ抽出する方法を紹介します。

GetFiles関数でファイル一覧を配列として取得し、その配列に対して特定条件のファイルのみ抽出する方法

コレクションに対する検索や抽出などが行えるLINQを使います。
GetFiles関数に続けて、Where句を記載します。具体的には以下のように記述します。

Directory.GetFiles("フォルダのフルパス").Where(Function(file) file.Contains("検索したい文字")).ToList

Where句の後ろの Function は決まり文句です。

file は配列から取り出した1要素にあたるものを記載するとわかりやすいと思います。 今回は、フォルダに含まれるファイル一覧の配列から取り出す一要素なので file を指定しています。fileをitemに変えて以下のように記述しても正常に動作します。

Directory.GetFiles("フォルダのフルパス").Where(Function(item) item.Contains("検索したい文字")).ToList

繰り返しアクティビティにおける「要素」と同じ考え方ですね。

続いて条件を記載します。file変数に指定した文字が含まれていること を抽出条件にするため、以下の関数を記述しています。

file.Contains("検索したい文字")

もし ファイルの最後が指定した文字で終わっていることとしたい場合は以下になります。

Directory.GetFiles("フォルダのフルパス").Where(Function(file) file.EndsWith("指定した文字")).ToList

最後にList型に型を変換しています。これも決まり文句的に使っていただいて問題ないと思います。

UiPathにおける使用方法

フォルダ内の指定した拡張子のファイルのみ取得する

基本は先ほどの説明の通りで、条件式のみ変更します。
拡張子によって条件判断させるので、ファイルパスから拡張子を取得する関数であるPath.GetExtension関数を使用し、以下のように記述します。

Directory.GetFiles("フォルダのフルパス").Where(Function(file) Path.GetExtension(file)="xlsx").ToList

Path,GetExtension関数を使用するとファイルの拡張子のみを取得できます。

Path.GetExtension(file)="xlsx"

UiPathにおける使用方法