Показать сообщение отдельно
Непрочитано 29.03.2015, 16:39 #1
LISP. Список файлов в каталоге и подкаталогах
WhiteShark
 
Регистрация: 30.03.2012
Сообщений: 101

Может искал плохо, но не нашёл никак. Пришлось писать самому.

Код:
[Выделить все]
 (defun WS-FileList (CurDir blnFlat ExtMask / lst CurDir NextDirs)
  (setq lst (mapcar '(lambda (x) (strcat CurDir "\\" x)) (append lst (vl-directory-files CurDir ExtMask 1))))
  (setq NextDirs (mapcar '(lambda (x) (strcat CurDir "\\" x)) (vl-remove "." (vl-remove ".." (vl-directory-files CurDir nil -1)))))
  (if blnFlat
    (append lst (apply 'append (mapcar '(lambda (x) (WS-filelist x blnFlat ExtMask)) NextDirs)))
    (append lst (vl-remove () (mapcar '(lambda (x) (WS-filelist x blnFlat ExtMask)) NextDirs)))
    )
  )
Даёт на выходе список полных путей к файлам с желаемым расширением, лежащим в указываемой папке и её подкаталогах.
Второй параметр (blnFlat) управляет структурой списка: в случае True список будет "плоский", иначе - повторять структуру подкаталогов.

Пример вызова
(WS-filelist "C:\\Projects\\ProjName" T "*.dwg")

Последний раз редактировалось WhiteShark, 30.03.2015 в 10:09. Причина: Поправил
Просмотров: 1902
 
Размещение рекламы