(defun FindDwg (Drive Fle / CheckForSubFolders FilesAtFolder fso fldr
rootfolder
)
(vl-load-com)
(defun CheckForSubFolders (itm)
(FilesAtFolder itm)
(vlax-for
itmf (vlax-get-property itm 'Subfolders)
(CheckForSubFolders itmf)
)
)
(defun FilesAtFolder (itm)
(vlax-for
files (vla-get-files itm)
(if (wcmatch (vla-get-name files) Fle)
(print (vla-get-path files))
(princ)
)
)
)
(setq fso (vlax-create-object "Scripting.FileSystemObject"))
(setq
fldr (vlax-invoke-method fso 'GetDrive Drive)
rootfolder (vlax-get-property fldr 'RootFolder)
)
(FilesAtFolder rootfolder)
(vlax-for
sf (vlax-get-property rootfolder 'Subfolders)
(CheckForSubFolders sf)
)
(princ)
)
用法:(findDwg“D:“Master\u Site.*.dwg”)
参数是驱动器号和字符串模式
我花了几个小时写代码,递归的事情让我头疼
很好,李
正确的语法是:
(LM:FindFile "Drawing7.dwg" "C:")
然而,您确实意识到这可能需要很长时间,因为LISP不仅速度很慢,而且算法将检查根目录的每个文件夹和子文件夹(在您的示例“C:”中),并且仅在找到文件时才会停止。
谢谢pBe
至少你现在有一些使用FSO的练习-我倾向于使用已经存在的:wink: 有人注意到了吗?
6
太简单了。我希望有更复杂的事情。英雄联盟 也:
7 目录C:\*。图纸 疯狂。 谢谢大家。
非常感谢。
页:
1
[2]