请教如何用vlisp获取某个文件夹内所有文件?
<font face="宋体" size="2">如题,请教如何用vlisp获取某个文件夹内所有文件?比如D:\\abc内的所有dwg文件?用vl-directory-files可以列出指定文件夹内的所有文件,但是其子文件夹内的文件如何获取??如果该文件夹内含有多个、多级子文件夹呢,这些子文件夹内的文件是如何取得呢??求助各位大侠高人解答下,不胜感激!<br/>附:我只会lisp,请告知lisp方法,多谢!</font> <p>(defun GetFileList (dirName / files lst)<br/> (setq dirName (path-addBackSlash dirName)<br/> files (mapcar '(lambda (x) (strcat dirName x)) (vl-directory-files dirName "*.dwg" 1))<br/> )<br/> (mapcar '(lambda (x) (setq lst (append lst (GetFileList (strcat dirName x)))))<br/> (vl-remove-if '(lambda (x) (member x '("." "..")))<br/> (vl-directory-files dirName nil -1)<br/> )<br/> )<br/> (append files lst)<br/>)</p><p><br/>(defun path-addBackSlash (path)<br/> (if (not (member (substr path (strlen path)) '("\\" "/")))<br/> (strcat path "\\") path<br/> )<br/>)</p> <p>要的就是这效果啊!!感谢,太感谢了!!</p><p><font face="Verdana" color="#000000">caoyin大哥你太伟大了!!真是高人啊!我真是佩服得五体投地,无限钦佩无以复加!没想到我的问题这么快就迎刃而解,我自己用循环函数编,怎么也解决不了,那个恼人的("." "..")不知如何处理!经测试您的程序完全达到要求,谢谢,再次感谢您,以及感谢明经社区!!我爱你们!!</font></p> <p>不必客气</p><p>我以前也是用while,现在用程序自身循环的方法感觉稍简洁一些</p> 还有,lisp真是个奇妙而让人琢磨不透的东西,有时觉得它局限性太大,功能太单一,可有时候高手们寥寥数行程序,简简单单的就解决了非常难缠的难题!!不由又让人五体投地悠然神往啊!仰慕和向往高手们的境界,太神奇太厉害了,caoyin大哥简直是惊为天人啊,我要再好好学习研究下lisp函数,再次拜谢,有时间再来向您请教。 学习了正在找相关资料 本帖最后由 nzl1116 于 2013-6-16 13:48 编辑晒晒我的方法,速度肯定没版主的快,功能有点出入
(defun GetAllFile (Dire / SubFile)
(setq SubFile (vl-remove-if
(function (lambda (x) (member x '(".." "."))))
(vl-directory-files Dire nil 0)
)
))
谢谢学习了
页:
[1]