明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 504|回复: 6

[讨论] 保证路径所在文件夹存在

  [复制链接]
发表于 2024-8-20 09:38:54 | 显示全部楼层 |阅读模式
为了将我的.mun文件拷贝到指定文件夹下面,我写了如下程序,用点用处,但作用不太

  1. ;;(vlax-invoke-method (vlax-create-object "Scripting.FileSystemObject") "GetFolder" (getenv "public"))
  2. ;;返回存在的文件夹路径
  3. (defun DIRECTORY-P (str / A FLAG L STR1);(setq str (strcat (getenv "public") "/b/"))
  4.   (setq str1 (fnsplitl str))
  5.   (cond        ((and str1 (/= (last str1) ""))
  6.          (setq str (vl-string-right-trim "/\\" (car str1)))
  7.         )                                ;(setq str "C:\\Users\\Public\\b/1.txt")
  8.         ((= (last str1) "") (setq str str))
  9.         ;;(setq str "C:\\Users\\Public\\b")
  10.         (T (setq str (vl-string-right-trim "/\\" str)))
  11.                                         ;(setq str "C:\\Users\\Public\\b\\")
  12.   )
  13.   (if (VL-FILE-DIRECTORY-P str)
  14.     str
  15.     (progn
  16.       (setq L (parse4 str "/\\"))
  17.       (setq str1 (car L))
  18.       (setq L (cdr L))
  19.       (while (and (setq a (car L))
  20.                   (not Flag)
  21.              )
  22.         (setq L (cdr L))
  23.         (if (VL-FILE-DIRECTORY-P (strcat str1 "\\" a))
  24.           (setq str1 (strcat str1 "\\" a))
  25.           (setq Flag T)
  26.         )
  27.       )
  28.       str1
  29.     )
  30.   )
  31. )
  32. ;;(DIRECTORY-P (strcat (getenv "public") "/b/d.txt"))
  33. ;;(DIRECTORY-P (strcat "D:/" "块包围盒.lsp"))
  34. ;;(DIRECTORY-P (strcat (getenv "public") "/b"))

  35. ;;返回存在的文件夹路径,如果文件夹不存在,则创建
  36. ;;如果str是文件全路径,则保证路径所在文件夹存在
  37. ;;例如(VL-FILE-COPY "D:\\1.txt" "C:\\Users\\Public\\b/c/.txt"),如果没有文件夹b 和c 则创建;
  38. ;;以确保拷贝成功
  39. (defun DIRECTORYMake-P (str / A L STR1)
  40.   (setq str1 (fnsplitl str))
  41.   (cond        ((and str1 (/= (last str1) ""))
  42.          (setq str (vl-string-right-trim "/\\" (car str1)))
  43.         )                                ;(setq str "C:\\Users\\Public\\b/1.txt")
  44.         ((= (last str1) "") (setq str str))
  45.         ;;(setq str "C:\\Users\\Public\\b")
  46.         (T (setq str (vl-string-right-trim "/\\" str)))
  47.                                         ;(setq str "C:\\Users\\Public\\b\\")
  48.   )
  49.   (if (VL-FILE-DIRECTORY-P str)
  50.     str
  51.     (progn
  52.       (setq L (parse4 str "/\\"))
  53.       (setq str1 (car L))
  54.       (setq L (cdr L))
  55.       (while (setq a (car L))
  56.         (setq L (cdr L))
  57.         (setq str1 (strcat str1 "\\" a))
  58.         (if (not (VL-FILE-DIRECTORY-P str1))
  59.           (vl-mkdir str1)
  60.         )
  61.       )
  62.       str1
  63.     )
  64.   )
  65. )
  66. ;;(DIRECTORYMake-P "C:\\Users\\Public\\b/c")

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-20 09:57:32 | 显示全部楼层
好源码下载学习,谢谢
发表于 2024-8-20 10:12:42 | 显示全部楼层
向黄大师学习
发表于 2024-8-20 11:19:34 | 显示全部楼层
支持黄大师
发表于 2024-8-20 11:22:52 | 显示全部楼层
没必要那么麻烦,直接(vl-catch-all-apply 'vl-mkdir (list dir))
发表于 2024-8-23 10:29:55 | 显示全部楼层
支持黄大师
发表于 2024-8-27 02:38:14 来自手机 | 显示全部楼层
(defun c:usb ()   (vl-load-com)   (setq fldr "D:\\123")   (setq selection (ssget "WP" '(0. "INSERT") (cons 2 "*.dwg")))   (if (null selection)     (princ "\n未选择到任何文件。")     (progn       (setq acadObj (vlax-get-acad-object))       (setq drives (vlax-invoke-method acadObj 'GetInterfaceObject "AutoCAD.Application.19"))       (setq usbDrive nil)       (foreach drive drives         (if (vlax-get-property drive 'DriveType)             (if (= (vlax-get-property drive 'DriveType) 2)                 (setq usbDrive drive)             )         )       )       (if usbDrive           (progn             (repeat (sslength selection)               (setq ent (ssname selection (setq i (1+ i))))               (setq block-ref (vlax-ename->vla-object ent))               (setq file-path (vla-get-pathname block-ref))               (vl-file-copy file-path (strcat (vlax-get-property usbDrive 'RootDirectory) "\\123\\" (vl-filename-base file-path) ".dwg"))             )             (princ "\n文件复制成功到 U 盘。")           )           (princ "\n未找到 U 盘。")       )     )   )   (princ) )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-22 18:25 , Processed in 0.188958 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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