找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2309|回复: 8

[求助] [求助]:请教:如何用vlisp获取某个文件夹内所有文件?

[复制链接]
发表于 2008-8-31 12:42:51 | 显示全部楼层 |阅读模式

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

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

×
如题,请教如何用vlisp获取某个文件夹内所有文件?比如D盘的所有dwg文件?用vl-directory-files可以列出指定文件夹内的所有文件,但是其子文件夹内的文件如何获取??当该文件夹内含有多个、多级子文件夹时呢,这些子文件夹内的文件是如何取得呢??求助哪位大侠高人解答下,不胜感激!
附:我只会lisp,请告知lisp方法,多谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 23个

财富等级: 恭喜发财

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

使用道具 举报

发表于 2008-9-14 10:55:53 | 显示全部楼层
试试看我这个函数
尝试了用递归来解决读取子目录下文件和下级子目录内的文件。

  1.   [FONT=courier new]
  2. ;;;返回用户指定目录下的指定类型文件,是否返回子目录内文件由directories控制
  3. ;;;调用方法:
  4. ;;;如:(hj:getFNfromDir  "e:\\cad"   "*.dwg"  0)
  5. ;;;将返回一个有文件名构成的表表
  6. s
  7. (defun hj:getFNfromDir (directory FNtype directories /  #fileNames# #fileDir# #fileDir-1# #fileNames-2#)
  8.   ;;directories 0   列出文件和目录(缺省值)。
  9.   ;;directories 1   仅列出文件。
  10.   
  11.   
  12.   (if directory
  13.     (progn
  14.       (setq #fileNames-2# (VL-DIRECTORY-FILES directory FNtype))
  15.       (if #fileNames-2#
  16.         (setq #fileNames-2# (mapcar '(lambda(z)(strcat directory "\" z))#fileNames-2#))
  17.         )
  18.       (setq #fileNames#(append  #fileNames# #fileNames-2#))
  19.       (if (= directories 0)
  20.         (progn
  21.         (setq #fileDir# (VL-DIRECTORY-FILES directory nil -1))
  22.         (setq #fileDir# (vl-remove "." #fileDir#))
  23.         (setq #fileDir# (vl-remove ".." #fileDir#))
  24.         (if #fileDir#
  25.           (progn
  26.             (setq #fileDir# (mapcar '(lambda(x)(strcat directory "\" x)) #fileDir#))
  27.             (foreach #fileDir-1# #fileDir#
  28.               ;;(setq #fileNames#(append #fileNames#(VL-DIRECTORY-FILES #fileDir-1# "*.dwg")))
  29.               (setq #fileNames#(append #fileNames#(hj:getFNfromDir  #fileDir-1# FNtype 0)))
  30.               );_end foreach
  31.             );_end progn
  32.           )
  33.         );_end progn
  34.       )
  35.     )
  36.   )
  37.   ;;(mapcar '(lambda(y) (strcat directory "\" y)) #fileNames#)
  38.   #fileNames#
  39.   )

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

使用道具 举报

发表于 2008-9-16 17:57:44 | 显示全部楼层

试下我的这个,

;;;返回用户指定目录下的指定类型文件
;;;调用方法:
;;;如:(getnamelist  "e:/cad"   "*.dwg")
;;;将返回一个有文件名构成的表
(defun getnamelist (path type / fileslist files1 files2)
(setq list1 nil
     fileslist nil
)
(while path
(setq list1 (append list1 (vl-directory-files path type 1))
files1 (cdr (cdr (vl-directory-files path nil -1)))
files2 (mapcar '(lambda (x) (strcat path "/" x)) files1)
fileslist (append (cdr fileslist) files2)
path (car fileslist)
)
)
list1
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 23个

财富等级: 恭喜发财

发表于 2008-9-19 20:58:13 | 显示全部楼层
请问怎样发像3楼那样带有格式的代码,我每次把代码一粘贴上来就和4楼一样了.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-21 11:44:25 | 显示全部楼层

谢谢大家

谢谢 caddog 和 791221ni  两位大侠的帮助!经测试,二位的程序都能实现预定功能,但有不同的是 791221ni  的只返回文件名,而 caddog  的能返回每个文件的全路径名,实际应用中可能更加实用。不管如何,多谢二位相助!学习,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-9-22 19:24:18 | 显示全部楼层

稍稍更改下就是全路径名了,

;;;返回用户指定目录下的指定类型文件全路径名
;;;调用方法:
;;;如:(getnamelist  "e:/2"   "*.dwg")
;;;将返回一个有文件名构成的表
(defun getnamelist (path type / fileslist files1 files2)
(setq list1 nil
     fileslist nil
)
(while path
(setq list1 (append list1 (mapcar '(lambda (x) (strcat path "/" x)) (vl-directory-files path type 1)))
files1 (cdr (cdr (vl-directory-files path nil -1)))
files2 (mapcar '(lambda (x) (strcat path "/" x)) files1)
fileslist (append (cdr fileslist) files2)
path (car fileslist)
)
)
list1
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-9-29 00:32:04 | 显示全部楼层
不错,实用!又要怎样才不显示子目录的文件?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 14:54 , Processed in 0.238748 second(s), 48 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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