alan886 发表于 2006-12-9 18:41:00

[LISP]搜索文件夹

<P>请问:有没有办法用LISP搜索所有文件夹及子文件夹下面的子文件.....子文件夹....子文件夹.......最终搜索点为所需要的文件夹。</P>

半夜星星 发表于 2018-3-20 08:49:53

谢谢,上面的代码,搜索所有的文件真是太好用了

tcsl9621 发表于 2006-12-14 10:11:00

推存使用DOSLIB。很方便。

c3a139 发表于 2006-12-20 12:26:00

tcsl9621发表于2006-12-14 10:11:00static/image/common/back.gif推存使用DOSLIB。很方便。

<p>DOSLIB是软件还是命令?</p>

oyxx1023 发表于 2006-12-21 14:25:00

<p>有人说FINDFILE可以搜索目录,那为什么(findfile "support")为NIL?SUPPORT不是在CAD目录里吗?</p><p></p>

yxp 发表于 2008-10-8 15:43:00

本帖最后由 作者 于 2008-10-8 15:44:20 编辑 <br /><br /> <p>DOSLIB 是一个二次开发的插件</p><p>各位:我想弄一个专门杀掉某个CAD病毒的lisp程序,可是用Vlisp好像无法遍历目录来搜索某个文件?</p>

liminnet 发表于 2008-10-8 16:49:00

jdhszh 发表于 2008-10-8 19:49:00

<p>这个也许能帮你实现</p><p>(defun getfiles (dir / out)<br/>&nbsp;&nbsp;&nbsp; (getfilesa dir)<br/>&nbsp;&nbsp;&nbsp; out<br/>)<br/>(defun getfilesa (dir / files )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (cond<br/>&nbsp;&nbsp; (&nbsp;&nbsp; (null dir))<br/>&nbsp;&nbsp; (&nbsp;&nbsp; (vl-file-directory-p dir)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dirr (cons dir dirr));;文件夹目录<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (setq files (vl-directory-files dir))<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq files (cddr&nbsp; files))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (mapcar 'getfilesa (mapcar '(lambda (x) (strcat dir "\\" x)) files))<br/>&nbsp;&nbsp; )&nbsp;&nbsp; )&nbsp;&nbsp; )&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&nbsp;&nbsp; t (setq out (cons dir out)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>)<br/>(setq outfiles out)<br/>&nbsp;&nbsp;&nbsp; )</p>

sailorcwx 发表于 2008-10-8 20:24:00

<p>这种问题用递归算法可以实现</p>

狂刀无痕 发表于 2008-10-9 21:17:00

本帖最后由 作者 于 2008-10-9 21:19:21 编辑 <br /><br /> <p>用dos命令 dir /? 看帮助</p><p>cd c:\aaa</p><p>dir bb* /ad &gt; c:dirlst.txt</p><p>读取文本提取</p><p>也许有人说用dos太土,写文本再读文本步骤复杂。但是经测试,对范围大的搜索(需要搜索多重子目录什么的),dos比vlisp快,不是快一点点。</p><p>尤其晕倒的是,如果对搜索过的目录再次进行搜索,速度快的可以让无能的人也很爽(当次开机有效,即便关了cad再开也不影响此效果)。我不知道为什么,因为我对系统运行的方式了解不够。</p><p>附件解压,加载后输入&nbsp; xdirx命令</p>

狂刀无痕 发表于 2008-10-9 21:27:00

本帖最后由 作者 于 2008-10-9 21:38:43 编辑 <br /><br /> <p>;| xdirx = 超快感搜索令 v1.1 (对话框B版)-----ok!!----by 狂刀</p><p>v1.0 2005.10<br/>v1.1 2006.5<br/>说明: 1. 因为太快了,根本不需要在状态条显示搜索过程!!故名"超快感搜索令".<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 参考: c:xfind = 超快感搜索令 v1.0 (函数版)<br/>技巧: 1. 应用到 添加acad.pgp并更新re-init技术!<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 应用到调用系统选择目录对话框.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3. 应用到shell参数4不闪屏。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4. 应用到外部命令: dir /s/b &gt;文件名 取得搜索结果.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5. 应用到 自动生成对话框文件并加载.&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6. !!! 有搜索记忆功能,只要搜过一次,下次再搜,即便是不同的通配符格式,也是眨眼之间完成,可能不到1秒!!<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7. 可记忆上次搜索的路径.支持含空格搜索,支持仅搜索目录。 eg:&nbsp; <font face="宋体" size="2">*.lsp,a?b*.fas,aa*.dwg</font><br/>测试:<br/>;; 8G硬盘.<br/>命令: xfindx<br/>|;</p><p><font face="宋体" size="2">1.速度<br/>搜索一次40g硬盘(含10g左右文件)用时1分钟左右。<br/>硬盘只要搜索过一次,以后再搜索,无论是什么通配符文件,均在1秒钟左右。cad退出也没有关系。只要不重新启动。再次进入cad,也是1秒左右(比win搜索还快)。<br/>2.可实时加载<br/><br/>win搜索的优势:<br/>可搜索文件内字符<br/>搜索到的文件马上显示.</font></p><p><font face="宋体" size="2">v1.1 2006.5<br/>说明: 1. 因为太快了,根本不需要在状态条显示搜索过程!!故名"超快感搜索令".<br/>2. 参考: <br/>3 !!! 有搜索记忆功能,只要搜过一次,下次再搜,即便是不同的通配符格式,也是眨眼之间完成,可能不到1秒!!<br/>4. 可记忆上次搜索的路径.<br/><br/>搜索一次40g硬盘(含10g左右文件)用时1分钟左右。<br/>硬盘只要搜索过一次,以后再搜索,无论是什么通配符文件,均在1秒钟左右。cad退出也没有关系。只要不重新启动。再次进入cad,也是1秒左右。<br/>我的电脑 cpu:amd 3200+</font><br/></p><p>参考帖子:</p><p><a href="http://www.xdcad.net/forum/showthread.php?s=&amp;postid=2801233#post2801233">http://www.xdcad.net/forum/showthread.php?s=&amp;postid=2801233#post2801233</a></p><p>及</p><p><a href="http://www.xdcad.net/forum/showthread.php?s=&amp;threadid=553068&amp;perpage=15&amp;display=&amp;pagenumber=1">http://www.xdcad.net/forum/showthread.php?s=&amp;threadid=553068&amp;perpage=15&amp;display=&amp;pagenumber=1</a></p><p><br/></p>
页: [1] 2
查看完整版本: [LISP]搜索文件夹