指定フォルダに入っているファイルのうち、指定拡張子リストに該当するものをフルパスで返すAppleScriptです。
macOS 10.6以降の64ビット化されたFinderは動作が遅いため、大量のファイル情報を取得するなどの用途には不向きです。このため、「(ファイル選択を取得する以外の)ファイル処理にはFinderを使わない」のが現在のAppleScriptのセオリーとなっています。
本Scriptでは、~/Library/Script Libraries/フォルダの存在確認と、その中に格納されている「scpt」「scptd」の拡張子を持つAppleScript書類ファイルのリストアップを高速に行います。
AppleScript名:指定フォルダ内のファイルのうち、指定拡張子リストに入っているものをすべて取得してフルパスを返す |
use AppleScript version "2.5" use scripting additions use framework "Foundation" property |NSURL| : a reference to current application’s |NSURL| property NSPredicate : a reference to current application’s NSPredicate property NSFileManager : a reference to current application’s NSFileManager property NSDirectoryEnumerationSkipsHiddenFiles : a reference to current application’s NSDirectoryEnumerationSkipsHiddenFiles set anExpList to {"scpt", "scptd"} — no dot set libPath to (((path to library folder from user domain) as string) & "Script Libraries:") set posixLibPath to POSIX path of libPath set fList to getFilepathListByExt(posixLibPath, anExpList) of me on getFilepathListByExt(aFol, aExtList as list) set aFM to NSFileManager’s defaultManager() set aFolExt to (aFM’s fileExistsAtPath:aFol isDirectory:true) as boolean if aFolExt = false then return {} –フォルダ自体が存在しなければヌルリストを返す set aURL to |NSURL|’s fileURLWithPath:aFol set theOptions to ((current application’s NSDirectoryEnumerationSkipsPackageDescendants) as integer) + ((current application’s NSDirectoryEnumerationSkipsHiddenFiles) as integer) set urlArray to aFM’s contentsOfDirectoryAtURL:aURL includingPropertiesForKeys:{} options:theOptions |error|:(missing value) set thePred to NSPredicate’s predicateWithFormat_("pathExtension.lowercaseString IN %@", aExtList) set anArray to (urlArray’s filteredArrayUsingPredicate:thePred) return anArray as {missing value, list} end getFilepathListByExt |
More from my site
(Visited 107 times, 1 visits today)