tyxdd 发表于 2008-8-31 12:52:00

请教如何用vlisp获取某个文件夹内所有文件?

<font face="宋体" size="2">如题,请教如何用vlisp获取某个文件夹内所有文件?比如D:\\abc内的所有dwg文件?用vl-directory-files可以列出指定文件夹内的所有文件,但是其子文件夹内的文件如何获取??如果该文件夹内含有多个、多级子文件夹呢,这些子文件夹内的文件是如何取得呢??求助各位大侠高人解答下,不胜感激!<br/>附:我只会lisp,请告知lisp方法,多谢!</font>

caoyin 发表于 2008-8-31 14:37:00

<p>(defun GetFileList (dirName / files lst)<br/>&nbsp; (setq dirName (path-addBackSlash dirName)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; files&nbsp;&nbsp; (mapcar '(lambda (x) (strcat dirName x)) (vl-directory-files dirName "*.dwg" 1))<br/>&nbsp; )<br/>&nbsp; (mapcar '(lambda (x) (setq lst (append lst (GetFileList (strcat dirName x)))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-remove-if '(lambda (x) (member x '("." "..")))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-directory-files dirName nil -1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>&nbsp; (append files lst)<br/>)</p><p><br/>(defun path-addBackSlash (path)<br/>&nbsp; (if (not (member (substr path (strlen path)) '("\\" "/")))<br/>&nbsp;&nbsp;&nbsp; (strcat path "\\") path<br/>&nbsp; )<br/>)</p>

tyxdd 发表于 2008-8-31 15:49:00

<p>要的就是这效果啊!!感谢,太感谢了!!</p><p><font face="Verdana" color="#000000">caoyin大哥你太伟大了!!真是高人啊!我真是佩服得五体投地,无限钦佩无以复加!没想到我的问题这么快就迎刃而解,我自己用循环函数编,怎么也解决不了,那个恼人的("." "..")不知如何处理!经测试您的程序完全达到要求,谢谢,再次感谢您,以及感谢明经社区!!我爱你们!!</font></p>

caoyin 发表于 2008-8-31 15:58:00

<p>不必客气</p><p>我以前也是用while,现在用程序自身循环的方法感觉稍简洁一些</p>

tyxdd 发表于 2008-8-31 16:10:00

还有,lisp真是个奇妙而让人琢磨不透的东西,有时觉得它局限性太大,功能太单一,可有时候高手们寥寥数行程序,简简单单的就解决了非常难缠的难题!!不由又让人五体投地悠然神往啊!仰慕和向往高手们的境界,太神奇太厉害了,caoyin大哥简直是惊为天人啊,我要再好好学习研究下lisp函数,再次拜谢,有时间再来向您请教。

pengfei2010 发表于 2013-6-5 23:03:05

学习了正在找相关资料

nzl1116 发表于 2013-6-5 23:28:48

本帖最后由 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)
                )
))

davide888 发表于 2015-4-27 21:20:08

谢谢学习了
页: [1]
查看完整版本: 请教如何用vlisp获取某个文件夹内所有文件?