c3a139 发表于 2007-4-25 19:26:00

如何删除文件夹里的文件

请问用LISP 如何实现删除文件夹里的某一类文件,如*.txt。。。

caoyin 发表于 2007-4-27 14:52:00

c3a139发表于2007-4-26 16:59:00static/image/common/back.gif随便再问一下,lambda (x / f)中/有什么用?在下面没用到

<p></p><p>lambda 是定义临时函数,和 defun 后面的 (x / y) 意义相同。“/”前面的是参数,后面的是变量,因为临时函数引用了变量 f ,所以放在 “/ ”后面,以区别函数之外的 " f '</p><p>例如:<br/>(setq x T)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;将变量 x 赋值为 T<br/>(defun test1 <font color="#ff0000">(/ x)<br/></font>&nbsp; (not x)<br/>)<br/>(test1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#3300ff">;;返回 T</font></p><p>而:<br/>(setq x T)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;将变量 x 赋值为 T<br/>(defun test1 <font color="#ff0000">()<br/></font>&nbsp; (not x)<br/>)<br/>(test1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font color="#0000ff">;;返回 nil</font></p>

caoyin 发表于 2007-4-26 10:40:00

<p>(defun test (dir extn / finis)<br/>&nbsp; (if (vl-file-directory-p dir)<br/>&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq finis (substr dir (strlen dir) 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (or (/= finis "\\") (/= finis "/"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq dir (strcat dir "\\"))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (mapcar '(lambda (x / f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (findfile (setq f (strcat dir x)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-delete f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-directory-files dir extn 1)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; )<br/>)</p><p>;;测试<br/>&nbsp;(test "c:\\temp" "*.*")<br/>&nbsp;(test (getenv "tmp") "*.bak")<br/></p>

c3a139 发表于 2007-4-26 12:12:00

<p>运行了一下,错误,参数太少</p><p>(mapcar '(lambda (x / f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (findfile (setq f (strcat dir x)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-delete f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>这一段的作用也不太明白</p>

caoyin 发表于 2007-4-26 14:01:00

<p>我运行没问题啊。</p><p>test 共两个参数,你有没有少</p><p>(test &lt;路径&gt; &lt;扩展名:如*.*, *.txt&gt;)</p><p></p><p><font color="#ff3300">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (mapcar '(lambda (x / f)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (findfile (setq f (strcat dir x)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-file-delete f)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;删除下面表中的文件<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (vl-directory-files dir extn 1);;得出文件列表<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</font><br/></p><p></p>

c3a139 发表于 2007-4-26 16:59:00

本帖最后由 作者 于 2007-4-26 17:47:05 编辑 <br /><br /> <p>谢谢你,可以用,是我操作的问题,再次感谢!</p>随便再问一下,lambda (x / f)中/有什么用?在下面没用到

c3a139 发表于 2007-4-28 17:11:00

明的了,谢谢!

不冰的冰红茶 发表于 2016-6-8 10:40:21

给个赞,很有用
谢谢

xujinhua 发表于 2018-7-18 12:54:33

caoyin 发表于 2007-4-26 10:40
(defun test (dir extn / finis)&nbsp; (if (vl-file-directory-p dir)&nbsp;&nbsp;&nbsp; (progn&nbsp;&nb ...

谢谢楼主,学习了
页: [1]
查看完整版本: 如何删除文件夹里的文件