明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1668|回复: 2

[求助]关于文件遍历的问题

[复制链接]
发表于 2009-12-26 07:57:00 | 显示全部楼层 |阅读模式
请问如何在多级目录中遍历查找符合条件的文件?
发表于 2009-12-26 22:36:00 | 显示全部楼层
  1. (defun C:SEARCHFOR (/ foundfiles folder fn)
  2.   (defun filesearch (fld filename / fld fn found flst lst)
  3.     (cond ((setq flst
  4.     (vl-remove ".." (vl-remove "." (vl-directory-files fld)))
  5.     )
  6.     (setq
  7.       lst (mapcar
  8.      (function (lambda (n)
  9.           (if (= (substr fld (strlen fld) 1) "\")
  10.      (strcat fld n)
  11.      (strcat fld "\" n)
  12.           )
  13.         )
  14.      )
  15.      flst
  16.    )
  17.     )
  18.     (foreach fd lst
  19.       (cond ((vl-file-directory-p fd)
  20.       (filesearch fd filename)
  21.      )
  22.      (T
  23.       (cond ((wcmatch fd filename)
  24.       (setq found fd
  25.      foundfiles
  26.       (cons found foundfiles)
  27.       )
  28.       (princ found)
  29.       (terpri)
  30.      )
  31.       )
  32.      )
  33.       )
  34.     )
  35.    )
  36.     )
  37.   )
  38.   (defun BrowseForFolder (PrmStr / ShlObj Folder FldObj OutVal)
  39.     (vl-load-com)
  40.     (setq
  41.       ShlObj (vla-getInterfaceObject
  42.         (vlax-get-acad-object)
  43.         "Shell.Application"
  44.       )
  45.       Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 PrmStr 0)
  46.     )
  47.     (vlax-release-object ShlObj)
  48.     (if Folder
  49.       (progn
  50. (setq FldObj (vlax-get-property Folder 'Self)
  51.        OutVal (vlax-get-property FldObj 'Path)
  52. )
  53. (vlax-release-object Folder)
  54. (vlax-release-object FldObj)
  55. OutVal
  56.       )
  57.     )
  58.   )
  59.   (setq folder (BrowseForFolder "选择要查找的文件夹: ")
  60. fn     (getstring "\n要查找的文件<*.dwg>: ")
  61.   )
  62.   (if (= folder "")
  63.     (setq folder (getenv "systemDrive"))
  64.   )
  65.   (if (= fn "")
  66.     (setq fn "*.dwg");查询所有的图形文件
  67.   )
  68.   (cond ((and folder (/= fn ""))
  69.   (filesearch folder fn)
  70. )
  71.   )
  72.   (princ
  73.     (strcat "\n共有" (itoa (length foundfiles)) "文件被查询到")
  74.   )
  75.   (princ)
  76. )
 楼主| 发表于 2009-12-30 23:23:00 | 显示全部楼层

谢谢啦

程序有个小小的瑕疵,文件扩展名是不区分大小写的,加入一个strcase处理就比较好了,呵呵

再谢谢,递归用的不好,传几次就有些晕了

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

本版积分规则

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

GMT+8, 2024-10-1 21:29 , Processed in 0.178647 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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