明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 779|回复: 2

复制文件相关函数(搬运非原创)

  [复制链接]
发表于 2024-8-23 09:37:56 | 显示全部楼层 |阅读模式
本帖最后由 CAD智能@未来 于 2024-8-23 09:42 编辑


;功能: 复制文件或目录
(Defun vldos-copy (from to / sys folder)
  (setq        from (vldos-formatpath from)
        to   (vldos-formatpath to)
  )
  (if (null (vl-file-directory-p to))
    (setq to (vldos-mkdir to))
  )
  (if (setq sys (vlax-get-or-create-object "Shell.Application"))
    (progn
      (if (setq folder (vlax-invoke-method sys 'namespace to))
        (progn
          (vlax-invoke-method folder 'copyhere from (+ 4 16))
          (vlax-release-object folder)
        )
      )
      (vlax-release-object sys)
    )
  )
  (princ)
)
;功能:复制目录下所有文件和目录
(Defun vldos-copy2 (From to / rtn)
  (cond
    ((vl-file-directory-p From)
     (if (< (strlen to) 3)
       (setq to (strcat to "\\"))
       (if (not (vl-file-directory-p to))
         (vldos-mkdir to)
       )
     )
     (if (setq
           Rtn (vlax-get-or-create-object "Scripting.FileSystemObject")
         )
       (progn
         (vlax-invoke-method Rtn 'CopyFolder From to T)
         (vlax-release-object Rtn)
         (if (vl-file-directory-p to)
           (setq Rtn (vldos-formatpath to))
         )
       )
     )
    )
    ((findfile From)
     (vl-file-copy From to)
     (if (setq rtn (findfile to))
       (setq rtn (vldos-formatpath rtn))
     )
    )
  )
  rtn
)
;功能:自动创建参数中所有不存在的目录
(Defun vldos-MkDir (Folder / FolderX Fil FFF Pos DIR DRV)
  (if (null
        (setq
          Fil (vlax-get-or-create-object "Scripting.FileSystemObject")
        )
      )
    (setq Folder nil)
    (progn
      (while (vl-string-search "/" Folder)
        (setq Folder (vl-string-subst "\\" "/" Folder))
      )
      (if (wcmatch Folder "*\\")
        (setq Folder (substr Folder 1 (1- (strlen Folder))))
      )
      (setq FolderX Folder)
      (while (setq Pos (vl-string-search "\\" Folder))
        (setq FFF    (cons (substr Folder 1 Pos) FFF)
              Folder (substr Folder (+ Pos 2))
        )
      )
      (setq FFF        (reverse (cons Folder FFF))
            DRV        (car FFF)
            FFF        (cdr FFF)
      )
      (foreach DIR FFF
        (if
          (null        (vl-file-directory-p (setq DRV (strcat DRV "\\" DIR)))
          )
           (vlax-invoke-method
             Fil
             'createfolder
             DRV
           )
        )
      )
      (vlax-release-object Fil)
      (if (setq Folder (vl-file-directory-p FolderX))
        (setq Folder (vldos-formatpath FolderX))
      )
    )
  )
  Folder
)
;功能:转换路径中字符 "/" 为 "\\" 并返回大写值
(Defun vldos-formatpath        (string)
  (while (vl-string-search "/" string)
    (setq string (vl-string-subst "\\" "/" string))
  )
  (while (vl-string-search "\\\\" string)
    (setq string (vl-string-subst "\\" "\\\\" string))
  )
  (setq string (strcase string))
  string
)

评分

参与人数 1明经币 +1 收起 理由
1028695446 + 1 很给力!

查看全部评分

发表于 2024-8-25 10:12:32 | 显示全部楼层
用DOS来会不会更快?
发表于 2024-8-28 07:47:29 | 显示全部楼层
感谢大神分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 05:56 , Processed in 0.174214 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表