再帰的ファイルリスト取得マクロ

21st August 2021 at 2:23pm

サブフォルダも含めて、全てのファイルリストを取得したい場合があります。

"getFileList()"は、直下のファイルリストしか取得することができません。

"getFileList()"の説明に、the ListFilesRecursively macroのリンク先があります。

それに少し手を加えたものを下にあげます。

function getFileListRecursively(dir, lst_fnms)
{
	list = getFileList(dir);
	
	for(i = 0; i < list.length; i++)
	{
		if(endsWith(list[i], "/"))
		{
			lst_fnms = getFileListRecursively("" + dir + list[i], lst_fnms);
		}
		else
		{
			lst_fnms = Array.concat(lst_fnms,dir + list[i]);
		}
	}
	
	return lst_fnms;
}

使い方としては、以下のようになります。lst_fnmsにファイルリストの結果が出力されます。

lst_fnms = newArray();
dir = getDirectory("select dir");
lst_fnms = getFileListRecursively(dir, lst_fnms);
Array.show(lst_fnms);

HomeへImageJマクロのあれこれへ