明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2893|回复: 7

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

[复制链接]
发表于 2008-8-31 12:52:00 | 显示全部楼层 |阅读模式
如题,请教如何用vlisp获取某个文件夹内所有文件?比如D:\\abc内的所有dwg文件?用vl-directory-files可以列出指定文件夹内的所有文件,但是其子文件夹内的文件如何获取??如果该文件夹内含有多个、多级子文件夹呢,这些子文件夹内的文件是如何取得呢??求助各位大侠高人解答下,不胜感激!
附:我只会lisp,请告知lisp方法,多谢!
发表于 2008-8-31 14:37:00 | 显示全部楼层

(defun GetFileList (dirName / files lst)
  (setq dirName (path-addBackSlash dirName)
        files   (mapcar '(lambda (x) (strcat dirName x)) (vl-directory-files dirName "*.dwg" 1))
  )
  (mapcar '(lambda (x) (setq lst (append lst (GetFileList (strcat dirName x)))))
          (vl-remove-if '(lambda (x) (member x '("." "..")))
                        (vl-directory-files dirName nil -1)
          )
  )
  (append files lst)
)


(defun path-addBackSlash (path)
  (if (not (member (substr path (strlen path)) '("\\" "/")))
    (strcat path "\\") path
  )
)

 楼主| 发表于 2008-8-31 15:49:00 | 显示全部楼层

要的就是这效果啊!!感谢,太感谢了!!

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

发表于 2008-8-31 15:58:00 | 显示全部楼层

不必客气

我以前也是用while,现在用程序自身循环的方法感觉稍简洁一些

 楼主| 发表于 2008-8-31 16:10:00 | 显示全部楼层
还有,lisp真是个奇妙而让人琢磨不透的东西,有时觉得它局限性太大,功能太单一,可有时候高手们寥寥数行程序,简简单单的就解决了非常难缠的难题!!不由又让人五体投地悠然神往啊!仰慕和向往高手们的境界,太神奇太厉害了,caoyin大哥简直是惊为天人啊,我要再好好学习研究下lisp函数,再次拜谢,有时间再来向您请教。
发表于 2013-6-5 23:03:05 | 显示全部楼层
学习了  正在找相关资料
发表于 2013-6-5 23:28:48 | 显示全部楼层
本帖最后由 nzl1116 于 2013-6-16 13:48 编辑

晒晒我的方法,速度肯定没版主的快,功能有点出入

  1. (defun GetAllFile (Dire / SubFile)
  2.   (setq        SubFile        (vl-remove-if
  3.                   (function (lambda (x) (member x '(".." "."))))
  4.                   (vl-directory-files Dire nil 0)
  5.                 )
  6.   ))

点评

你这个好像只能获取文件夹名称  发表于 2015-5-3 17:54
发表于 2015-4-27 21:20:08 | 显示全部楼层
谢谢  学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-22 03:28 , Processed in 0.158555 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表