pixel8er 发表于 2022-7-5 17:16:43

创建新文件夹无效

大家好
 
我试图使用lisp在homedrive中创建一个新目录,但它不起作用。
 
这是一个了不起的李Mac的例行程序。
 
所以调用函数的代码是
 
(LM:createdirectory "%HOMEDRIVE%\\AutoCAD2013\\Support")
 
...不起作用,返回零
 
如果我使用这个代码
 
(LM:createdirectory "C:\\AutoCAD2013\\Support")
 
...它起作用了。
 
我对主驱动器具有完全控制权限。主驱动器是否有其他停止创建文件夹的功能?
 

 
谢谢
保罗

BIGAL 发表于 2022-7-5 17:29:00

这为我返回了什么(getenv“Homedrive”)c:

pixel8er 发表于 2022-7-5 17:34:44

 
我得到“G:”在那里我可以看到我的home drive,所以假设正确吗?

BIGAL 发表于 2022-7-5 17:42:01

有时网络需要\\baracudda\用户而不是G:
 
使用(vl mkdir dir)尝试dir的不同选项
 
另一种方法是使用从Autocad调用的bat文件的老式DOS。G: CD。。。。。MD。。。。等
 

This worked for me (vl-mkdir "P:\\temp\\alan")
so try
(vl-mkdir (strcat (getenv "homedrive") "\\temp\\alan"))

pixel8er 发表于 2022-7-5 17:44:47

我收到一条错误消息
; 错误:错误的参数类型:stringp nil

BIGAL 发表于 2022-7-5 17:51:36

修复了发布“\\mydrive被转换为URL地址时没有注意到删除引号”,编辑的代码现在需要在引号“c:\\Temp\\Alan”等中工作

Lee Mac 发表于 2022-7-5 18:01:43

首先需要将环境变量%HOMEDRIVE%转换为UNC路径,例如:
;; Expand Environment String-Lee Mac

(defun LM:expenvstr ( str / res wsh )
   (if (setq wsh (vlax-create-object "wscript.shell"))
       (progn
         (setq res (vl-catch-all-apply 'vlax-invoke (list wsh 'expandenvironmentstrings str)))
         (vlax-release-object wsh)
         (if (null (vl-catch-all-error-p res))
               res
         )
       )
   )
)
(LM:createdirectory (LM:expenvstr "%HOMEDRIVE%\\AutoCAD2013\\Support"))或使用:
(LM:createdirectory (strcat (getenv "HOMEDRIVE") "\\AutoCAD2013\\Support"))

pixel8er 发表于 2022-7-5 18:05:31

 
谢谢艾伦。我看到了,然后手动输入——仍然不起作用。我觉得权限有点奇怪。

pixel8er 发表于 2022-7-5 18:13:04

 
非常感谢李!这非常有效。非常感谢

Lee Mac 发表于 2022-7-5 18:17:56

不客气!
页: [1]
查看完整版本: 创建新文件夹无效