★質問・概要
Q.JobAutoの「ファイルの繰り返し処理」で取得したファイルのフルパスから、ファイルが保存されているサブフォルダの部分だけを取り出したいです。どのように設定すればよいですか?
★回答
「変数の値を加工」アクションで「値セット」→「文字列関数:ディレクトリパス取得」→「文字置換」を順番に実行します。まずファイル名を除いてフォルダのフルパスを取得し、その後、基準となる親フォルダのパスを空欄に置換すると、サブフォルダ部分だけを取得できます。
なお、フォルダのフルパスがほしいだけなら「ディレクトリパス取得」までで十分です。「ファイルの繰り返し処理」の対象となるサブフォルダを列挙したい場合は、別のアクションである「フォルダの繰り返し処理」もご検討ください。
1.取得したい文字列の例
例えば、ファイルの繰り返しアクションで、次のフルパスが変数に格納されたとします。
C:\Data\受注\東京支店\注文.xlsx
| 取得したい内容 | 結果の例 | 使用する処理 |
|---|---|---|
| ファイル名 | 注文.xlsx | 文字列関数「ファイル名取得」 |
| 格納先フォルダのフルパス | C:\Data\受注\東京支店 | 文字列関数「ディレクトリパス取得」 |
| 親フォルダ「受注」から見たサブフォルダ部分 | 東京支店 | 「ディレクトリパス取得」→「文字置換」 |
2.JobAutoでサブフォルダ部分を取得する手順
2-1.ファイルの繰り返し処理でフルパスを変数へ格納する
- ロボデザインで「ファイルの繰り返し処理」アクションを作成します。
- 処理するフォルダを指定します。下位のフォルダ内にあるファイルも対象にする場合は、必要に応じて「サブフォルダも含む」にチェックを入れます。
- 「繰り返し処理対象のファイルパスの格納先」に変数(例:
ファイルパス)を指定します。 - 繰り返し処理の中で、変数に対象ファイルのフルパスが入っていることを確認します。
詳しくは、ファイルの繰り返し処理の設定方法をご確認ください。
2-2.「値セット」でファイルパスを読み込む
- 繰り返し処理の中に「変数の値を加工」アクションを作成します。
- 文字操作の「値セット」を追加し、加工対象にフルパスが格納された変数(例:
ファイルパス)を指定します。 - 値セットの段階で、
C:\Data\受注\東京支店\注文.xlsxが読み込まれていることを確認します。
2-3.「ディレクトリパス取得」でファイル名を除く
- 続けて文字操作の「文字列関数」を追加します。
- 関数で「ディレクトリパス取得」を選択します。
- 加工途中の値が、次のフォルダパスになっていることを確認します。
C:\Data\受注\東京支店
この状態でよければ、文字置換は不要です。フォルダのフルパスをそのまま加工結果の変数へ格納できます。
2-4.「文字置換」で基準フォルダのパスを除く
フォルダのフルパスではなく「東京支店」の部分だけがほしい場合は、さらに「文字置換」を追加します。
| 項目 | 指定する内容(例) |
|---|---|
| 置換する文字列 | C:\Data\受注\ |
| 置換後の文字列 | 空欄(何も入力しない) |
| 文字置換後の結果 | 東京支店 |
親フォルダのパスの末尾にある「\」も含めて置換してください。末尾の区切り文字を含めずに置換すると、結果に「\東京支店」のように区切り文字が残る場合があります。
加工結果を変数(例:サブフォルダ名)に格納し、後続のアクションから参照します。JobAutoの「文字置換」は対象となる文字列を置き換える機能のため、パスの途中に同じ文字列が別の場所にも含まれる場合は、意図しない部分まで置換されないか確認してください。
3.サブフォルダが複数階層ある場合
例えば、ファイルパスが次のように、サブフォルダが2階層ある場合を考えます。
C:\Data\受注\東京支店\2026\注文.xlsx
ディレクトリパス取得で C:\Data\受注\東京支店\2026 にした後、C:\Data\受注\ を空欄へ置換すると、結果は 東京支店\2026 です。
つまり、この方法は親フォルダを基準にした相対的なフォルダ部分を取得する方法です。常に最後の1階層だけを取り出すとは限りません。最後のフォルダ名だけが必要な場合は、必要な階層に応じて追加の文字列加工を検討してください。
4.想定どおり取得できない場合の確認事項
- フルパスの確認:「ファイルの繰り返し処理」で、期待しているファイルのパスが変数に格納されているか。
- 文字列関数の選択:「ファイル名取得」ではなく「ディレクトリパス取得」を選択しているか。
- 置換対象のパス:実際のフルパスと、削除したい親フォルダ部分が一致しているか。末尾の「\」を含めているか。
- 複数階層:サブフォルダ部分をすべて残すのか、特定の階層だけを取り出したいのか。
- 後続処理:取得した値が相対的なフォルダ名なのか、ファイル・フォルダ操作で直接使用できるフルパスなのかを区別しているか。
5.サブフォルダ自体を1つずつ取得したい場合
今回説明した方法は、すでに取得したファイルパスを文字列として加工する方法です。指定したフォルダの中にあるサブフォルダ自体を順番に取得し、そのフォルダごとに処理したい場合は「フォルダの繰り返し処理」アクションを使用します。
「フォルダの繰り返し処理」には「サブフォルダも含む」という設定があり、処理対象のフォルダパスを変数へ格納できます。詳しくはJobAutoでフォルダを繰り返し処理する方法をご確認ください。
関連するマニュアル・FAQ
- JobAutoでファイルの繰り返し処理を行う方法:ファイルのフルパスを変数へ格納する設定
- JobAutoで文字列関数を使う方法:ファイル名取得とディレクトリパス取得
- JobAutoの変数操作マニュアル:値セット・文字置換・文字列関数
- JobAutoでフォルダを繰り返し処理する方法:サブフォルダを順番に取得する場合
