ryljun 发表于 2023-6-2 11:07:12

请教一个lisp使用FSO复制文件的问题

D盘已经有个文件夹“d:\abc”,里面已有多个文件,现在想复制到“c:\123”文件夹下。代码如下 :

(defun c:ccdd (/ FSO)
;;;复制文件,参考资料https://codeantenna.com/a/vfVkZPl6WT
(vl-load-com)
(setq FSO (vlax-create-object "scripting.FileSystemObject"))
;;;(vlax-dump-object FSO t)
(setqsourcePath"d:\\abc"
destinationPath"c:\\123"
)
;;;(princ (vlax-invoke-method FSO 'FolderExists destinationPath))
(if (= :vlax-false (vlax-invoke-method FSO 'FolderExists destinationPath))
    (vlax-invoke-method FSO 'CreateFolder destinationPath)
    (progn
;;;      (alert "文件夹已存在。")
    )
)
(setq sourcePath (vlax-invoke FSO 'BuildPath sourcePath "\\*.*"))
;;;(alert sourcePath)
(princ (vlax-invoke-method
    FSO'CopyFile sourcePath destinationPath T))
(vlax-release-object FSO)    ;释放对象(结束进程)
)现在的问题是只运行成功一次,再次运行就出错。也就是不能实现覆盖。除非删除c:\123文件夹。求大神解答谢谢。

llsheng_73 发表于 2023-6-3 10:18:31

(vlax-invoke-method FSO'CopyFile sourcePath destinationPath T)
修改为(vlax-invoke-method FSO'CopyFile sourcePath destinationPath :vlax-true)

gaics 发表于 2023-6-3 09:55:13

单个文件可以用vl-file-copy,多个没试过

ryljun 发表于 2023-6-3 13:15:02

llsheng_73 发表于 2023-6-3 10:18
(vlax-invoke-method FSO'CopyFile sourcePath destinationPath T)
修改为(vlax-invoke-method FSO'Co ...

把t改为:vlax-true成功了,但是CAD假死一分钟左右。可能电脑太旧了。

vormittag 发表于 2023-6-5 09:12:26

操作系统的工作最好交给操作系统,何必自己造轮子呢。

ryljun 发表于 2023-6-5 10:15:07

改为:vlax-true还是不行,在笔记本上以为可以了,今天来上班办公室的电脑还是提示
; 错误: Automation 错误。未提供说明。

ryljun 发表于 2023-6-5 10:18:16

vormittag 发表于 2023-6-5 09:12
操作系统的工作最好交给操作系统,何必自己造轮子呢。

我这里 是多台电脑,想做插件自动更新的功能,以前是运行vbs复制,现在不行了,管理员权限也不行,还经常被360杀进程,所以才想这办法。
页: [1]
查看完整版本: 请教一个lisp使用FSO复制文件的问题