zxwbq 发表于 2005-7-12 21:07:00

[LISP]请问如何遍历指定文件夹下的所有子文件夹

<FONT face=Simsun size=2>编一个程序,工作过程如下<BR><BR>1。用户输入指定文件夹名称<BR>2。autocad自动进入该文件夹内的所有子文件夹,子子文件夹。。。<BR>3。逐个进入子文件夹(子子文件夹)后,对文件夹内的dwg图片进行操作<BR><BR>以上的第二步请问如何实现?是否必须用vl-directory-files加循环的办法?<BR>有没有现成的程序实现这个功能?<BR><BR>请高手指点,谢谢</FONT>

onej 发表于 2005-7-13 10:47:00

可以的,用2个不同的文件夹函数循环

SWAYWOOD 发表于 2006-3-18 00:10:00

我怎么也循环不出来呀,请赐教!

秋枫 发表于 2006-3-18 12:37:00

<P>最好用递归。</P>
<P>写了个样例:&nbsp;</P>

xujinhua 发表于 2020-7-27 09:06:06

;;获取指定文件夹下的所有子文件夹
;; (xdl-fl-getfolders "c:")
;; (xdl-fl-getfolders "C:\\许数据")
(defun xdl-fl-getfolders (path / fls result)
(if (not (wcmatch path "*`."))
    (setq fls (vl-remove-if-not
                '(lambda (x) (vl-file-directory-p x))
                (mapcar      '(lambda (p) (strcat path "\\" p))
                        (vl-directory-files path)
                )
            )
    )
)
(if fls
    (setq fls (mapcar '(lambda (f / ff)
                         (if (not result) (setq result '()))
                         (if (setq ff (xdl-fl-getfolders f))
                           (setq result (append ff result))
                           (setq result (cons f result))
                         )
                     )
                      (vl-remove-if
                        '(lambda (p) (wcmatch p "*`."))
                        fls
                      )
            )
    )
)
(if result
    (append (list path) result)
    (list path)
)
)
页: [1]
查看完整版本: [LISP]请问如何遍历指定文件夹下的所有子文件夹