dhy 发表于 2013-3-2 10:28:46

怎样可以不用选择文件夹呢

这是本论坛的一个删除BAK文件的程序,忘记是哪位高手的了,我的BAK文件都在固定的一个文件夹里面,每次删除都要选择一次,有点麻烦,请高手帮忙改一下,在程序里面指定路径,使用的时候,直接输入命令就可以了,还望帮忙,谢谢!
(defun c:00000(/ folder filelst)
(defun BrowseForFolder (PrmStr / ShlObj Folder FldObj OutVal)
    (vl-load-com)
    (setq
      ShlObj (vla-getInterfaceObject
         (vlax-get-acad-object)
         "Shell.Application"
       ) ;_ 结束vla-getInterfaceObject
      Folder (vlax-invoke-method ShlObj 'BrowseForFolder 0 PrmStr 0)
    ) ;_ 结束setq
    (vlax-release-object ShlObj)
    (ifFolder
      (progn
(setq FldObj (vlax-get-property Folder 'Self)
      OutVal (vlax-get-property FldObj 'Path)
) ;_ 结束setq
(vlax-release-object Folder)
(vlax-release-object FldObj)
OutVal
      ) ;_ 结束progn
    ) ;_ 结束if
) ;_ 结束defun
(if (and (setq folder (BrowseForFolder "选择要删除bak的文件夹: "))
   (setq filelst (GetAllFiles folder "*.bak"))
      ) ;_ 结束and
    (foreach v filelst
      (vl-file-delete v)
    ) ;_ 结束foreach
) ;_ 结束if
(princ)
) ;_ 结束defun
(defun GetAllFiles (dir typ)
(append
    (mapcar '(lambda (x) (strcat dir "\\" x))
      (vl-directory-files dir typ 1)
    ) ;_ 结束mapcar
    (apply 'append
   (mapcar '(lambda (x) (GetAllFiles (strcat dir "\\" x) typ))
       (vl-remove-if
         '(lambda (x) (wcmatch x "`.,`.`."))
         (vl-directory-files dir "*" -1)
       ) ;_ 结束vl-remove-if
   ) ;_ 结束mapcar
    ) ;_ 结束apply
) ;_ 结束append
) ;_ 结束defun

Andyhon 发表于 2013-3-2 11:25:07

(if (and (setq folder (BrowseForFolder "选择要删除bak的文件夹: "))
改成===>
(if (and (setq folder "要删除bak的文件夹全路径")

dhy 发表于 2013-3-2 12:59:12

嗯,可以了,谢谢
页: [1]
查看完整版本: 怎样可以不用选择文件夹呢