找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 721|回复: 4

[LISP函数]:列出目录下的所有ext扩展名文件

[复制链接]
发表于 2002-6-18 18:30:07 | 显示全部楼层 |阅读模式

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

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

×
从明经还是别的那里下的lisp,但是不能列出该目录
下的所有ext扩展名文件,返回一个文件名列表.


  1. (defun sea_subfolders (pathfile ext / EXT NIL-1 PATHFILE SUB)
  2.   ;;;pathfile路径下及所有子目录内的ext文件列表
  3.   ;;; Usage: (sea_subfolders (getvar "DWGPREFIX") "*.dwg")
  4.   (mapcar '(lambda (sub)
  5.     (cons sub
  6.       (vl-directory-files
  7.         (strcat pathfile sub)
  8.         ext 1) )
  9.     ); lambda
  10.     (vl-directory-files
  11.       (vl-filename-directory pathfile) nil-1)
  12.   )
  13. )


用土办法另外写了一个。再请教dx们的高招(玩c的兄弟要笑了:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-6-18 18:35:15 | 显示全部楼层
这会儿只有老菜和灯火在这个版面,很想叫一声“阿灯,你好!”:)
回想原来论坛的热闹劲儿,现在好像太理性也太冷清了。

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

使用道具 举报

 楼主| 发表于 2002-6-18 22:44:25 | 显示全部楼层
可能是没讲清目的:

lisp程序,返回某目录下所有 某扩展名的文件名表。


俺的土办法是用dir>文件再读出,当然细节上包括
dir最小化运行,最后把过程文件删掉。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2002-6-20 00:11:42 | 显示全部楼层
提这个问题,是因为我发现用doslib出错(也许是个bug)

(command "dir" "c:\\*.dwg /s /b >c:\\cyotemp.txt")
(dos_filep "c:\\cyotemp.txt")
返回值为t,确实找到了新生成的文件。

而(dos_command "dir c:\\*.dwg /s /b >c:\\cyotemp.txt" 2)
(dos_filep "c:\\cyotemp.txt")
返回值为nil,确实没找到了新生成的文件,
如果存在旧的cyotemp.txt,那么再往下的读文件....都是针对
旧的文件,就像没re-read硬盘一样,而实际上新文件已生成。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-6-24 08:01:13 | 显示全部楼层
并不是doslib出错,那是一种执行时间的问题,dos的执行时间很慢,当(dos_command "dir c:\\*.dwg /s /b >c:\\cyotemp.txt" 2) 这句程序还没有生成cyotemp.txt这个档案时(目录下档案数量不尽相同), (dos_filep "c:\\cyotemp.txt")程序就开始执行,故无法找到档案cyotemp.txt(还没有生成),但只要延迟执行(dos_filep "c:\\cyotemp.txt")则返回值为t(因cyotemp.txt巳经生成),但通常很难判断延迟的时间(几乎不可能),因而程序将失败。(我曾遇到类似的问题!!!这是我想出的最可能原因!!)


  1. (defun SEA_SUBFOLDERS (PATHFILE EXT TXT / DWG_NAME_LIST FILE_DWG N)
  2. ;;;pathfile路径下及所有子目录内的ext文件表
  3. ;;;pathfile如: "D:\\FILES\",  ext如: "*.dwg", txt如: "c:\\cyotemp.txt"
  4. ;;;Usage: (sea_subfolders (getvar "DWGPREFIX") "*.dwg" "c:\\cyotemp.txt")
  5.   (setq PATHFILE (substr PATHFILE 1 (- (strlen PATHFILE) 1)))
  6.   (setq DWG_NAME_LIST (vl-directory-files PATHFILE EXT))
  7.   (if (/= DWG_NAME_LIST NIL)
  8.     (progn
  9.       (setq FILE_DWG (open TXT "w"))
  10.       (foreach N DWG_NAME_LIST
  11.         (write-line (strcat PATHFILE "\" N) FILE_DWG)
  12.       )
  13. ;(foreach N DWG_NAME_LIST
  14. ;        (setq dwg_list (append dwg_list (list(strcat PATHFILE "\" N)))
  15. ;      )
  16.       (close FILE_DWG)
  17.       (alert (strcat "已建立" TXT "档案"))
  18.     )
  19.     (alert (strcat PATHFILE "目录下并无你指定的档案"))
  20.   )
  21.   (princ)
  22. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 15:53 , Processed in 0.293681 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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