Heyner 发表于 2022-7-6 10:29:39

使用LISP创建文件夹

大家好:
 
我正在更新我的一些旧代码,我想使用shell命令,你知道为什么吗。
 
我需要创建一个文件夹,下面是创建文件夹num\u br所写的内容:
 
 
(setq commd(strcat“md”)

Heyner 发表于 2022-7-6 10:42:26

(setq commd(strcat“md”)

Heyner 发表于 2022-7-6 11:01:33

对不起,我两次尝试发布代码都失败了,你可以看到我显然是新手。其思想是使用vl命令创建文件夹。那是哪个命令?

lpseifert 发表于 2022-7-6 11:14:09

从开发者帮助>AutoLISP参考

Lee Mac 发表于 2022-7-6 11:19:29

vl mkdir可以创建单个文件夹,因此我使用以下内容创建目录结构:
 

;;-------------------=={ Make Directory }==-------------------;;
;;                                                            ;;
;;Creates a directory structure                           ;;
;;------------------------------------------------------------;;
;;Author: Lee McDonnell, 2010                               ;;
;;                                                            ;;
;;Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;dir - the directory to create                           ;;
;;------------------------------------------------------------;;
;;Returns:T if directory creation is successful, else nil ;;
;;------------------------------------------------------------;;

(defun LM:MakeDirectory ( dir / MakeDirectory folders )
;; © Lee Mac 2010
;; (LM:MakeDirectory "C:\\Folder\\Subfolder")
(vl-load-com)

(defun MakeDirectory ( root folders )
   (if folders
   (
       (lambda ( dir ) (vl-mkdir dir)
         (MakeDirectory dir (cdr folders))
       )
       (strcat root "\\" (car folders))
   )
   )
)

(if (setq folders (LM:str->lst (vl-string-translate "/" "\\" dir) "\\"))
   (MakeDirectory (car folders) (cdr folders))
)
(vl-file-directory-p dir)
)

;;-------------------=={ String -> List }==-------------------;;
;;                                                            ;;
;;Separates a string into a list of strings using a         ;;
;;specified delimiter string                              ;;
;;------------------------------------------------------------;;
;;Author: Lee McDonnell, 2010                               ;;
;;                                                            ;;
;;Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;str - string to process                                 ;;
;;del - delimiter by which to separate the string         ;;
;;------------------------------------------------------------;;
;;Returns:A list of strings                               ;;
;;------------------------------------------------------------;;

(defun LM:str->lst ( str del / pos )
;; © Lee Mac 2010
(if (setq pos (vl-string-search del str))
   (cons (substr str 1 pos) (LM:str->lst (substr str (+ pos 1 (strlen del))) del))
   (list str)
)
)

Heyner 发表于 2022-7-6 11:39:47

非常感谢,它正按我所希望的那样完美地工作。
页: [1]
查看完整版本: 使用LISP创建文件夹