pBe 发表于 2022-7-6 10:14:13

我的想法(另一种方法)
 

(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”)
 
参数是驱动器号和字符串模式

pBe 发表于 2022-7-6 10:14:35

 
 
我花了几个小时写代码,递归的事情让我头疼
 
 
很好,李

Lee Mac 发表于 2022-7-6 10:19:14

 
正确的语法是:
 
(LM:FindFile "Drawing7.dwg" "C:")
 
然而,您确实意识到这可能需要很长时间,因为LISP不仅速度很慢,而且算法将检查根目录的每个文件夹和子文件夹(在您的示例“C:”中),并且仅在找到文件时才会停止。

Lee Mac 发表于 2022-7-6 10:23:26

 
谢谢pBe
 
至少你现在有一些使用FSO的练习-我倾向于使用已经存在的:wink:

alanjt 发表于 2022-7-6 10:25:16

有人注意到了吗?
 
6

ReMark 发表于 2022-7-6 10:29:38

 
太简单了。我希望有更复杂的事情。英雄联盟

Lee Mac 发表于 2022-7-6 10:31:59

也:
 
7

ReMark 发表于 2022-7-6 10:36:37

目录C:\*。图纸

alanjt 发表于 2022-7-6 10:39:28

疯狂。

Michaels 发表于 2022-7-6 10:41:25

谢谢大家。
 
非常感谢。
页: 1 [2]
查看完整版本: 如何在我的公司找到一幅画