本ページには広告が含まれています。
サブフォルダを含めたファイル一覧を配列で返します。第二引数以降は処理をする際に必要なだけの引数のため指定する必要はありません。
- 構文
- Array = getFileList( folderspec, TextStream, filename, bool )
- 引数
- folderspec 必須
- フォルダのパス
- TextStream 省略可
- TextStreamオブジェクト
- filename 省略可
- 一時ファイル名
- bool 省略可
- 再帰呼び出しの深さが最上部かを表すブール値
- 戻り値
プログラム
解説
- 2行目
- 3,10行目
- TextStreamがNothingなら4行目>>>。
- 4-8行目
- TempフォルダのFolderオブジェクトをTempFolder、パスをTempFolderspecに代入します。ランダムに生成した一時ファイル名をname、フォルダ名と繋げたフルパスをfilenameに代入します。
- 9行目
- filenameで指定したパスでTextStreamオブジェクトを生成し、TextStreamに代入します。このテキストファイルにリストアップしたファイル名を一時的に格納します。
- 11行目
- folderspecのFolderオブジェクトを生成しFolderに代入します。
- 12行目
- 指定したフォルダに含まれるすべてのフォルダから構成されるFoldersコレクションを取得しFoldersに代入します。
- 13,18行目
- Foldersコレクションに含まれるすべてのFolderオブジェクトにアクセスします。
- 14行目
- 現在のフォルダから下層のフォルダを取得するため再帰呼び出しする。
- 15-17行目
- Folderオブジェクトに含まれるファイルの一覧を取得し、テキストファイルに書き込みます。
- 19-26行目
- 再帰呼び出しの最上部ならば20行目>>>。14行目>>>で再帰呼び出しする際第四引数のboolにFalseを指定しているので、このIF文でTrueと判定された場合は最上部ということになり、すべてのサブフォルダ・ファイルにアクセスしたことになります。
- 20行目
- テキストファイルを一旦閉じ、内容を保存します。
- 21-23行目
- 再度テキストファイルを開き、内容をstrに代入します。
- 24行目
- filenameのテキストファイルを削除します。
- 25行目
- strの内容を改行文字で区切り配列にし返します。一行毎にフォルダ名・ファイル名が記述されているので、配列の各要素にフォルダ名・ファイル名が格納されていることになります。
プログラム実行例
全ファイルをサブフォルダから直下に取り出す
D:\Pictures\100ANDRO\より下層フォルダにあるファイルを直下に移動させます。ファイル名が重複する場合は - コピー、 - コピー (2)のような連番をつけて変更されます。
空になったフォルダを削除するにはdeleteEmptyFoldersを使います。
使用関数
関連記事
- Shell.Explore メソッド
- 指定したディレクトリをエクスプローラで開きます。
- Folder オブジェクト
- フォルダのすべてのプロパティにアクセスできます。
- CreateFolders関数 (自作関数)
- FSO.CreateFolderの改良版。親フォルダが存在しなくてもフォルダを作成できます。
- Folder.CopyHere メソッド (Shell)
- 1つまたは複数のアイテムをフォルダにコピーします。
- Folder.MoveHere メソッド (Shell)
- 1つまたは複数のアイテムをこのフォルダに移動します。
- FileSystemObject オブジェクト
- DELETEFILE関数 (スクリプト関数)
- テキストファイルを削除します。
- FCLOSE関数 (スクリプト関数)
- テキストファイルを閉じます。
- FGET関数 (スクリプト関数)
- テキストファイルの読み込みを行います。
- GETDIR関数 (スクリプト関数)
- ファイル名を取得します。
