找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 890|回复: 7

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

[复制链接]
发表于 2005-7-12 20:51:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
编一个程序,工作过程如下

1。用户输入指定文件夹名称
2。autocad自动进入该文件夹内的所有子文件夹,子子文件夹。。。
3。逐个进入子文件夹(子子文件夹)后,对文件夹内的dwg图片进行操作

以上的第二步请问如何实现?是否必须用vl-directory-files加循环的办法?
有没有现成的程序实现这个功能?

请高手指点,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-7-12 21:31:15 | 显示全部楼层
如果你会用VBA、VB、ARX等就不必用什么VL
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-7-12 21:55:17 | 显示全部楼层
vb和vba会一点点,斑竹给介绍一下用vb或vba怎么实现这个功能吧?
谢谢拉
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-19 07:40:21 | 显示全部楼层
可试试用dos_lib 里的 dos_find 函数
参考网址:http://www.mcneel.com/doslib.htm
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-2 10:22:41 | 显示全部楼层
用vl-directory-files加递归实现

  1. (defun zfl-file-foldersof (path sub / n re p)
  2.   (setq re (list (strcase path)))
  3.   (setq        p (cddr        (mapcar        '(lambda (x) (strcat path "\" x))
  4.                         (vl-directory-files path "*.*" -1)
  5.                 )
  6.           )
  7.   )
  8.   (if p
  9.     (progn
  10.       (foreach n p
  11.         (setq n (strcase  n))
  12.         (if (/= sub 0)
  13.         (setq re (append (zfl-file-foldersof n (if (= 'int (type sub)) (1- sub)sub)) re))
  14.           
  15.           )
  16.       )
  17.     )
  18.      )
  19. re
  20. )


例子

  1. (zfl-file-foldersof "c:" 1)
  2. ("C:\\EBAYTOOLS" "C:\\我的音乐" "C:\\VPSTUDIO" "C:\\PYTHON24" "C:\\WINDOWS" "C:\\JIEMIFOLDER" "C:\\CPDYJ" "C:\\RUBY" "C:\\DOWNLOADS" "C:\\KAV UPDATER UPDATE FILES" "C:\\RECYCLER" "C:\\RPC" "C:\\ARCHVISION" "C:\\TANGENT"  "C:\\FOUND.003" "C:\\C_DILLA" "C:\\TDDOWNLOAD" "C:\\THSWARE" "C:\\TEMP" "C:\\FOUND.002" "C:\\FOUND.001" "C:\\FOUND.000" "C:\\RECYCLED" "C:\\PROGRAM FILES" "C:")
  3. _$
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-10-2 11:42:11 | 显示全部楼层

  1. ;;获取指定文件夹下的所有子文件夹
  2. ;; (xdl-fl-getfolders "c:")
  3. ;; (xdl-fl-getfolders "c:\\windows")
  4. (defun xdl-fl-getfolders (path / fls result)
  5.   (if (not (wcmatch path "*`."))
  6.     (setq fls (vl-remove-if-not
  7.                 '(lambda (x) (vl-file-directory-p x))
  8.                 (mapcar        '(lambda (p) (strcat path "\" p))
  9.                         (vl-directory-files path)
  10.                 )
  11.               )
  12.     )
  13.   )
  14.   (if fls
  15.     (setq fls (mapcar '(lambda (f / ff)
  16.                          (if (not result) (setq result '()))
  17.                          (if (setq ff (xdl-fl-getfolders f))
  18.                            (setq result (append ff result))
  19.                            (setq result (cons f result))
  20.                          )
  21.                        )
  22.                       (vl-remove-if
  23.                         '(lambda (p) (wcmatch p "*`."))
  24.                         fls
  25.                       )
  26.               )
  27.     )
  28.   )
  29.   (if result
  30.     (append (list path) result)
  31.     (list path)
  32.   )
  33. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-2 20:39:38 | 显示全部楼层
最初由 ericsywong 发布
[B]可试试用dos_lib 里的 dos_find 函数
参考网址:http://www.mcneel.com/doslib.htm [/B]


用doslib要注意延时,否则可能只生成了一部分表就被引用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-3 13:00:53 | 显示全部楼层
看来需要提高啊!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 17:24 , Processed in 0.295889 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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