找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1369|回复: 7

[源码] 非递归法列出目录下所有文件

[复制链接]
发表于 2021-5-11 23:28:20 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun $lie-chu-mu-lu-xia-suo-you-wen-jian$ (lst / fs-all ns wjs kzm f)
  2.   ;列出目录下所有文件,含子级目录,所有目录下的文件
  3. ;;;  ($lie-chu-mu-lu-xia-suo-you-wen-jian$
  4. ;;;    (list
  5. ;;;      (cons
  6. ;;;  "目录"
  7. ;;;  "C:\\uploads"
  8. ;;;      )
  9. ;;;      (cons "扩展名" "*.dwg")
  10. ;;;    )
  11. ;;;  )
  12.    (or (and lst
  13.      (= (type lst) 'list)
  14.      (setq kzm (cdr (assoc "扩展名" lst)))
  15.      (> (strlen kzm)0)
  16.      (wcmatch kzm "[,`*.*,]")
  17.       )
  18.       (setq kzm "*.*")
  19.   )
  20.   (or (and lst
  21.      (= (type lst) 'list)
  22.      (setq f (cdr (assoc "目录" lst)))
  23.       )
  24.       (and lst (= (type lst) 'str) (setq f lst))
  25.   )
  26.   (if (and
  27.   (and f (findfile f))
  28.   (NOT (OR (and f (wcmatch f "[A-Z]:"))
  29.      (and f (wcmatch f "[a-z]:"))
  30.        )
  31.   )        ;不允许整个磁盘扫描
  32.       )
  33.     (progn
  34.       (while (and f (wcmatch f "*`\\*"))
  35.   (setq f (vl-string-subst "/" "\\" f))
  36.       )
  37.       (setq fs-all nil)
  38.       (setq fs-all (cons f fs-all))
  39.       (setq fs (vl-directory-files f "*.*" -1))
  40.       (setq fs (vl-remove ".." fs))
  41.       (setq fs (vl-remove "." fs))
  42.       (setq fs (mapcar (function (lambda (a) (strcat f "/" a))) fs))
  43.       (setq fs-all (APPEND fs-all fs))
  44.       (while (AND fs (setq f (car fs)) (< (LENGTH fs-all) 10000))
  45.   (setq ns nil)
  46.   (setq ns (vl-directory-files f "*.*" -1))
  47.   (setq ns (vl-remove ".." ns))
  48.   (setq ns (vl-remove "." ns))
  49.   (setq ns (mapcar (function (lambda (a / n)
  50.              (setq n (strcat f "/" a))
  51.              (set 'fs-all (cons n fs-all))
  52.              n
  53.            )
  54.        )
  55.        ns
  56.      )
  57.   )
  58.   (setq fs (append fs ns))
  59.   (setq fs (cdr fs))
  60.       )
  61.     )
  62.   )
  63.   (setq wjs nil)
  64.   (mapcar (function
  65.       (lambda (a / wj)
  66.         (setq wj (vl-directory-files a kzm 1))
  67.         (setq wj (vl-remove ".." wj))
  68.         (setq wj (vl-remove "." wj))
  69.         (setq wj (mapcar (function (lambda (b) (strcat a "/" b))) wj))
  70.         (set 'wjs (append wjs wj))
  71.       )
  72.     )
  73.     fs-all
  74.   )
  75.   wjs
  76. )

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

已领礼包: 756个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 676个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 375个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 4365个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 146个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 13:34 , Processed in 0.251503 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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