潇湘飞雨 发表于 2021-5-21 19:41:09

LISP创建隐藏的多级文件夹,求修正!

本帖最后由 潇湘飞雨 于 2021-5-22 15:18 编辑

;请教如何在C盘创建一个默认隐藏的文件夹,文件夹有多级,例如C:\bos\dgd\dsg
;出错提示输入的字符有缺陷!
;
; -- VxMakeDirectory ;
; Creates the specified directory(ies). ;
; Copyright: ;
;   ?001 MENZI ENGINEERING GmbH, Switzerland ;
; Arguments : ;
;   Dir = Folder to create, e.g. "C:\\Temp\\MyTemp\\AllScrap" ;
; Return : ;
;   > T   VxMakeDirectory succeed ;
;   Nil Error on creating directory(ies) ;
; Notes: ;
;   - Requires ScrRun.dll (see also notes at top of page). ;
;
;
;USAGE : (VXMAKEDIRECTORY "C:\\Temp\\MyTemp\\AllScrap")
(defun (VXMAKEDIRECTORY
      (DIR / CURDIR DRVOBJ FILSYS RETVAL TMPLST TMPVAL)
   (setq FILSYS (vlax-create-object "Scripting.FileSystemObject")
CURDIR (vl-string-right-trim "\" (vl-string-right-trim "/" DIR))
   )
   (while (/= (setq TMPVAL (vl-filename-directory CURDIR)) CURDIR)
   (setq TMPLST (cons TMPVAL TMPLST)    CURDIR TMPVAL
    )
   )
   (setq   RETVAL (cond
       ((= (vlax-invoke FILSYS 'DRIVEEXISTS TMPVAL) 0) NIL)
       ((setq DRVOBJ (vlax-invoke FILSYS 'GETDRIVE TMPVAL))
      (cond
   ((= (vlax-get DRVOBJ 'ISREADY) 0) NIL)
   (t    (foreach MEMB TMPLST
      (cond
      ((= (vlax-invoke FILSYS 'FOLDEREXISTS MEMB) -1))
      ((vlax-invoke FILSYS 'CREATEFOLDER MEMB))      )
    )
    (cond
      ((= (vlax-invoke FILSYS 'FOLDEREXISTS DIR) -1))
      ((vlax-invoke FILSYS 'CREATEFOLDER DIR) t)
      (t NIL)
    )
   )
      )
       )
   )
   )
   (if DRVOBJ
   (vlax-release-object DRVOBJ)
   )
   (vlax-release-object FILSYS)
   RETVAL )


这是论坛里面找到源码,感谢龙龙仔!


tryhi 发表于 2021-5-22 11:14:05

(vl-string-right-trim "\" (vl-string-right-trim "/" DIR))
这句少了一个反斜杠

潇湘飞雨 发表于 2021-5-22 11:27:52

tryhi 发表于 2021-5-22 11:14
(vl-string-right-trim "\" (vl-string-right-trim "/" DIR))
这句少了一个反斜杠

OK已经解决,十分感谢!!!

zmzk 发表于 2022-12-23 11:32:20

出错提示输入的字符有缺陷
页: [1]
查看完整版本: LISP创建隐藏的多级文件夹,求修正!