如何删除文件夹里的文件
请问用LISP 如何实现删除文件夹里的某一类文件,如*.txt。。。 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) ;;将变量 x 赋值为 T<br/>(defun test1 <font color="#ff0000">(/ x)<br/></font> (not x)<br/>)<br/>(test1) <font color="#3300ff">;;返回 T</font></p><p>而:<br/>(setq x T) ;;将变量 x 赋值为 T<br/>(defun test1 <font color="#ff0000">()<br/></font> (not x)<br/>)<br/>(test1) <font color="#0000ff">;;返回 nil</font></p> <p>(defun test (dir extn / finis)<br/> (if (vl-file-directory-p dir)<br/> (progn<br/> (setq finis (substr dir (strlen dir) 1))<br/> (if (or (/= finis "\\") (/= finis "/"))<br/> (setq dir (strcat dir "\\"))<br/> )<br/> (mapcar '(lambda (x / f)<br/> (if (findfile (setq f (strcat dir x)))<br/> (vl-file-delete f)<br/> )<br/> )<br/> (vl-directory-files dir extn 1)<br/> )<br/> )<br/> )<br/>)</p><p>;;测试<br/> (test "c:\\temp" "*.*")<br/> (test (getenv "tmp") "*.bak")<br/></p> <p>运行了一下,错误,参数太少</p><p>(mapcar '(lambda (x / f)<br/> (if (findfile (setq f (strcat dir x)))<br/> (vl-file-delete f)<br/> )<br/> )<br/>这一段的作用也不太明白</p> <p>我运行没问题啊。</p><p>test 共两个参数,你有没有少</p><p>(test <路径> <扩展名:如*.*, *.txt>)</p><p></p><p><font color="#ff3300"> (mapcar '(lambda (x / f)<br/> (if (findfile (setq f (strcat dir x)))<br/> (vl-file-delete f) ;;删除下面表中的文件<br/> )<br/> )<br/> (vl-directory-files dir extn 1);;得出文件列表<br/> )</font><br/></p><p></p> 本帖最后由 作者 于 2007-4-26 17:47:05 编辑 <br /><br /> <p>谢谢你,可以用,是我操作的问题,再次感谢!</p>随便再问一下,lambda (x / f)中/有什么用?在下面没用到 明的了,谢谢! 给个赞,很有用
谢谢 caoyin 发表于 2007-4-26 10:40
(defun test (dir extn / finis) (if (vl-file-directory-p dir) (progn &nb ...
谢谢楼主,学习了
页:
[1]