# ファイル名の取得（部分一致 \*複数個所）について

**URL:** <https://forum.uipath.com/t/topic/457890>\
**Category:** フォーラム\
**Created:** [July 20, 2022, 12:16am UTC](https://forum.uipath.com/t/topic/457890 "2022-07-20T00:16:40Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![1111217](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/1111217/32/251418_2.png) [@1111217](https://forum.uipath.com/u/1111217)\
**Post date:** [July 20, 2022, 12:16am UTC](https://forum.uipath.com/t/topic/457890/1 "2022-07-20T00:16:40Z")

</div>

お世話になっております。  
ファイル名の取得（部分一致 \*複数個所）についてご教示いただけますと幸いです。  
※以下文章について、UiPathフォーラムの仕様と思われますが 式の中の \*が表示されない為代わりに※を記載しております。お手数ですがお読み替えください。

取得したいファイル名：  
※A\_B※.xlsx  
※↑「A\_B」と「.xlsx」を含むファイル名を取得したい 基本フォルダ内に「A\_B」と「.xlsx」を含むファイルが1つのみ存在する想定  
※↑実際は「A」と「B」の部分は「繰り返し(各行)」で値を取得します

試行した内容：  
繰り返し(各行) の本文に「代入」アクティビティ格納  
変数 = Directory.GetFiles(“パス”,“※” + row(“A”).ToString + “\_” + row(“B”).ToString + “※.xlsx”)

発生したエラー：  
式 “Directory.GetFiles(“パス”,”※" + row(“A”).ToString + “\_” + row(“B”).ToString + “※.xlsx”)" の処理中にコンパイルエラーが発生しました。  
型 ”String” の1次元配列’ の値を ’String’ に変換できません。

どのような原因で上記のようなエラーが発生しておりますか。  
仕様を把握できておらず恐れ入りますがご教示いただけますと幸いです。

---

<div class="post-metadata">

**Author:** ![Ueda.i](https://avatars.discourse-cdn.com/v4/letter/u/46a35a/32.png) [@Ueda.i](https://forum.uipath.com/u/Ueda.i)\
**Post date:** [July 20, 2022, 12:41am UTC](https://forum.uipath.com/t/topic/457890/2 "2022-07-20T00:41:53Z")

</div>

エラーから推測するに、格納先の「変数」がString型になっているのではないでしょうか。  
Array[String]型を選択してみてください。

---

<div class="post-metadata">

**Author:** ![1111217](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/1111217/32/251418_2.png) [@1111217](https://forum.uipath.com/u/1111217)\
**Post date:** [July 20, 2022, 1:42am UTC](https://forum.uipath.com/t/topic/457890/3 "2022-07-20T01:42:34Z")

</div>

Ueda.iさん  
ご教示いただきありがとうございます。  
※□は半角の［］に読み替えください。  
変数の型を「String」→「String」に変更（Array of [T]を選択した後に「String」を選択）したところエラーが消えました。

ただ、変数にファイル名が取得できているか確認する為に「代入」の後に「メッセージボックス」アクティビティを配置したところ「System.String」が表示されました。

※フォルダ内にrow(″A″).ToStirng + ″\_″ + row(″B″).ToString と″.xlsx″が含まれるファイルが存在する事は確認できているのですが  
何が原因でしょうか…？  
「代入」アクティビティの左辺値（Directory.GetFiles(″〜）の中身が間違っておりますかね…  
部分一致のファイル名取得方法についてご存知でしたらご教示いただけますと幸いです

---

<div class="post-metadata">

**Author:** ![Ueda.i](https://avatars.discourse-cdn.com/v4/letter/u/46a35a/32.png) [@Ueda.i](https://forum.uipath.com/u/Ueda.i)\
**Post date:** [July 20, 2022, 3:02am UTC](https://forum.uipath.com/t/topic/457890/4 "2022-07-20T03:02:00Z")

</div>

配列の中身を確認するには、添え字を付けてあげる必要があります。  
「変数(0)」とすると配列の1番目の要素を取得できます。

また全ての要素を確認するには、繰り返し（コレクションの各要素）を使用してループしてください。

![image](https://global.discourse-cdn.com/uipath/original/4X/b/3/d/b3d1cac74baf43fd45a2243daffa17b8cebf759f.png)

---

<div class="post-metadata">

**Author:** ![1111217](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/1111217/32/251418_2.png) [@1111217](https://forum.uipath.com/u/1111217)\
**Post date:** [July 20, 2022, 4:17am UTC](https://forum.uipath.com/t/topic/457890/5 "2022-07-20T04:17:12Z")

</div>

Ueda.iさん  
ご教示いただきありがとうございます。  
メッセージボックス：  
変数(0).ToString  
を試行したところ、パス&ファイル名が表示されました。

Directory.GetFilesはファイル名を取得する式だと思っておりましたので、パスまで表示された点は疑問が残りますが、パスの部分を削って（先頭から〜文字を削って）ファイル名を完成させたいと思います。  
お忙しい中ご確認、ご回答いただきありがとうございました。

---

<div class="post-metadata">

**Author:** ![cheez\_RPA](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/cheez_rpa/32/278069_2.png) [@cheez\_RPA](https://forum.uipath.com/u/cheez_RPA)\
**Post date:** [July 20, 2022, 8:55am UTC](https://forum.uipath.com/t/topic/457890/6 "2022-07-20T08:55:53Z")

</div>

すでに解決されているとのことで、補足情報として書き込みさせていただきます。

> [@1111217](#):
>
> Directory.GetFilesはファイル名を取得する式だと思っておりましたので、パスまで表示された点は疑問が残りますが、パスの部分を削って（先頭から〜文字を削って）ファイル名を完成させたいと思います。

`Directory.GetFiles` は、指定した条件に一致するファイルの一覧を、 **パスを含めて** 返す仕組みになっています。

> **[Directory.GetFiles メソッド (System.IO)](https://learn.microsoft.com/ja-jp/dotnet/api/system.io.directory.getfiles?view=netframework-4.7.2)**
>
> 指定した条件を満たすファイルの名前を返します。

取得された結果からファイル名の部分のみ抽出したい場合は、 `Path.GetFileName` を使用するとスマートです。  
例えば取得されたファイルパスが `filePath` であったとすると、代入アクティビティで下記のようにすれば、`fileName`にファイル名の部分のみ抽出できますので、お試しください。

```auto
fileName = Path.GetFileName(filePath)

```

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/uipath/user_avatar/forum.uipath.com/system/32/182466_2.png) [@system](https://forum.uipath.com/u/system)\
**Post date:** [July 23, 2022, 8:56am UTC](https://forum.uipath.com/t/topic/457890/7 "2022-07-23T08:56:27Z")

</div>

Closed on July 23, 2022, 8:56am UTC

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