ファイル名でファイルを判別してファイルパスを取得したいです

UiPath初心者です。

ファイル名に数字が入っている複数のファイルの中で、数字が1番大きいファイルのパスを取得したいです。
フォルダ内の全てのファイルパスを取得した後にどのようにしたら特定できますでしょうか?
数字は①、②、③のような形式で入っています。
数字は1番大きくて⑩までです。

私が考えつくやり方は、ファイル名に①が含まれているか②~⑩が含まれているかで条件分岐をして、②~⑩が含まれている中でまた③~⑩が含まれているか条件分岐をしてelseに流れた時にファイルパスを取得する、という感じで条件分岐の中に条件分岐をたくさん作っていくめちゃくちゃ稚拙なやり方しか思いつかなくて・・・

どなたかよろしくお願いいたします。

こんにちは

数字は①、②、③のような形式で入っています。
数字は1番大きくて⑩までです

丸付数値の中で一番大きいものを含むファイルパスを取得したいということであれば

files = System.IO.Directory.GetFiles(yourPath)

として

files.OrderByDescending(Function(f) System.Text.RegularExpressions.Regex.Match(System.IO.Path.GetFileName(f),"[①-⑩]").Value).First()

で取得できると思います。

1 Like

ご回答いただきありがとうございます。

filesの型をarray of stringにしていたんですが、

これをfilesに代入すると型system.stringからsystem.stringに割り当てることはできませんと出てしまいます。
型はどうすればよろしいでしょうか?

こんにちは

上記の式はひとつのStringを返すので、単にString型となります。
要件として対象となるファイルが複数ファイルが存在し(例えば⑩A.xlsxと⑩B.xlsx)、それらをすべて取得する必要がありますでしょうか?
もしそうであれば式自体を変更する必要があります。

すみません。
該当するファイル1つだけでよかったのでstring型で大丈夫でした。
ただ、ファイル名に①~④の数字がそれぞれ含まれる4つのファイルをfor eachで試してみたところ、①が含まれるファイルが選ばれてしまいました。
1番大きな数字が入っているファイルパスを取得したいのでこの場合④が選ばれてほしいんですが、何かやり方が間違っているのでしょうか・・?

こんにちは

どのような実装をしていますか?上記は同じフォルダ内に複数のファイルがあり、それの最大のファイルを抽出しているので、この条件に合致するならForEach等のループは不要です。

不要でした!
filesに格納された4つのパスを1つずつループでチェックするんだと条件分岐的な感じで勘違いしておりました。
理解が遅くてすみませんでした!
いつもありがとうございます!!!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.