乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 98|回复: 9

[编程交流] 创建文件夹和子文件夹

[复制链接]

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:09:37 | 显示全部楼层 |阅读模式
你好
 
我创建了一个lisp例程,该例程绘制PDF并根据客户机将其保存到某个文件夹中。作为扩展,我想为从块中提取的客户机的每个工作创建一个文件夹。我已经设法使用这些信息创建了一个文件夹,但需要两种不同类型的PDF,我想再次将其拆分为两个不同的文件夹。
 
我遇到的问题是创建这两个子文件夹。
 
文件夹结构应为“C:\\Users\\“UName”\\Documents\\PDF的\\Client A\\”作业名,然后在此文件夹中还有另外两个文件夹,一个称为Issue,另一个称为Check Print。我试图创建这两个子文件夹,但没有运气,但程序运行良好,没有任何错误。
 
我猜是因为在绘图时,lisp创建了带有JobName的文件夹,但无法验证它是否存在,然后在JobName文件夹中创建子文件夹。我可能错了,但经过一些搜索后,我能在网上找到的唯一帮助就是创建一个文件夹或要求用户输入的东西。lisp背后的想法是向用户询问一些最小的问题,如图纸大小、颜色或单色打印等,并自动完成其余部分,因此我真的不想再添加另一个对话框,让用户输入保存PDF的位置,因为这将无法解决问题。
 
  1. (defun ClientProjectFolder ( / UName SJobDesc1 SJobDesc2 SJobDesc3 SPN   ClientProjectFolderName ClientProjectFolderNameCP ClientProjectFolderNameIssue)
  2. (setq UName (getenv "UserName"))
  3. (setq SJobDesc1 (showattvalue "PW_TITLE" "JOB_DESC"))
  4. (setq SJobDesc2 (showattvalue "PW_TITLE" "JOB_DESC2"))
  5. (setq SJobDesc3 (showattvalue "PW_TITLE" "JOB_DESC3"))
  6. (setq SPN (strcat SJobDesc1 " " SJobDesc2 " " SJobDesc3))
  7. (setq ClientProjectFolderName (strcat "C:\\Users\" UName "\\Documents\\PDF's\\ClientA\" SPN))
  8. (vl-mkdir ClientProjectFolderName)
  9. T
  10. (setq ClientProjectFolderNameCP (strcat "C:\\Users\" UName "\\Documents\\PDF's\\ClientA\" SPN "\\Check Print\"))
  11. (vl-mkdir ClientProjectFolderNameCP)
  12. T
  13. (setq ClientProjectFolderNameIssue (strcat "C:\\Users\" UName "\\Documents\\PDF's\\ClientA\" SPN "\\Issue\"))
  14. (vl-mkdir ClientProjectFolderNameIssue)
  15. T
  16. )

 
如果我创建的一些变量不匹配,请原谅,我只是快速更改了名称,因为它们是客户端名称。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:19:17 | 显示全部楼层
此功能应根据需要执行:创建目录
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:28:45 | 显示全部楼层
嗨,李,
 
我试过几种不同的方法,但都没能成功。它不会在调用中使用用户定义的变量吗。
  1. (LM:createdirectory "C:\\Users\" UName "\\Documents\\PDF's\\ClientA\" SPN "\\Check Print")

我需要能够在用户文档中创建目录,这不是一个常数,以及项目名称,这将永远是不同的。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:30:12 | 显示全部楼层
您需要了解strcat函数
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:40:16 | 显示全部楼层
我使用了strcat,但它不起作用,但我已经解决了这个问题。我在属性“JOB\u DESC2”和“JOB\u DESC3”上测试它的图形是空白的,这导致创建任何超过SPN变量的内容停止。这些属性并不总是填充的,在我测试的示例中它们是完全空白的。如果这些变量是空白的,有没有办法让它工作,因为我真的不想忽略它们,因为无论它们是否包含任何信息,都是50/50。
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 17:48:23 | 显示全部楼层
好的,因为属性是空的,我用“”来隔开属性,这就是问题的根源。是否有替代使用“”的方法,但仍会在属性之间留出一个空间。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:55:03 | 显示全部楼层
检查空格并使用其他类似-or
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 18:02:14 | 显示全部楼层
不确定OP所说的“空白”是什么意思。但缺失的(showattvalue)函数很可能返回nil。
  1. (setq SPN
  2. (vl-string-trim
  3.    " "
  4.    (strcat
  5.      (if SJobDesc1 SJobDesc1 "") ; Assumption: SJobDesc1 is either nil or a string.
  6.      " "
  7.      (if SJobDesc2 SJobDesc2 "")
  8.      " "
  9.      (if SJobDesc3 SJobDesc3 "")
  10.    )
  11. )
  12. )
  13. (if (/= "" SPN)
  14. (setq SPN (strcat SPN "\"))
  15. )
  16. ...
  17. (strcat "C:\\Users\" UName "\\Documents\\PDF's\\ClientA\" SPN "Check Print\")
  18. ...
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:06:46 | 显示全部楼层
我可能会建议:
  1. (setq SPN
  2.    (substr
  3.        (strcat
  4.            (if (member SJobDesc1 '(nil "")) "" (strcat " " SJobDesc1))
  5.            (if (member SJobDesc2 '(nil "")) "" (strcat " " SJobDesc2))
  6.            (if (member SJobDesc3 '(nil "")) "" (strcat " " SJobDesc3))
  7.        )
  8.        2
  9.    )
  10. )
以避免可能的双空格。
回复

使用道具 举报

5

主题

30

帖子

25

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:15:43 | 显示全部楼层
伙计们,我刚刚抽出时间来试一下你们的建议,现在效果很好。
谢谢你的帮助!!!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 09:51 , Processed in 0.773592 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表