Perhaps something along the lines of:
[ Note! This recursively searches every subfolder of every subfolder ... of every subfolder under the given root ]
(defun _searchforfolder ( root pattern / folder folders )
(if
(setq folder
(vl-some
(function
(lambda ( folder )
(if (wcmatch (strcase folder) (strcase pattern))
folder
)
)
)
(setq folders
(vl-remove-if '(lambda ( x ) (wcmatch x "`.,`.`."))
(vl-directory-files
(setq root
(vl-string-right-trim "\\" (vl-string-translate "/" "\\" root))
)
nil -1
)
)
)
)
)
(strcat root "\\" folder)
(vl-some
(function
(lambda ( folder )
(_searchforfolder (strcat root "\\" folder) pattern)
)
)
folders
)
)
)
(_searchforfolder "C:\\Library" "*Fasteners*")
To search only the root directory for a matching folder:
(defun _searchforfolder ( root pattern / folder )
(if
(setq folder
(vl-some
(function
(lambda ( folder )
(if (wcmatch (strcase folder) (strcase pattern))
folder
)
)
)
(vl-remove-if '(lambda ( x ) (wcmatch x "`.,`.`."))
(vl-directory-files
(setq root
(vl-string-right-trim "\\" (vl-string-translate "/" "\\" root))
)
nil -1
)
)
)
)
(strcat root "\\" folder)
)
)
(_searchforfolder "C:\\Library" "*Fasteners*")
Or, you can use the 'pattern' parameter of the vl-directory-files function:
(defun _searchforfolder ( root pattern )
(vl-directory-files (vl-string-right-trim "\\" (vl-string-translate "/" "\\" root)) pattern -1)
)
(_searchforfolder "C:\\Library" "*Fasteners*")
To create the folder, use the vl-mkdir function
Of course, all of these functions could equally be derived from the FileSystemObject.