
- ;;**************************************FindFilePath*********************************
- ;;Author: Michael Kolomiyets
- ;;Function: Finds full path of any file in hard drive.
- ;Usage: (FindFilePath "filename.ext")
- ;;Examlpe: Run on command prompt: (FindFilePath "acad.exe")
- ;;Return: "C:\\Program Files\\AutoCAD 2000i\\acad.exe"
- ;;Note: Does not search network drives
- (vl-load-com)
- (defun FindFilePath (InputFile / PCDrives
- PCDrive PCDriveChoice PCDriveLetter
- PCFolder PCFolderPath i
- )
- (if (/= (vl-string-trim " " InputFile) "")
- (progn
- (setq ReturnFolder nil)
- (setq ContProc T)
- (setq FlSysObj (vlax-create-object "scripting.filesystemobject"))
- (setq PCDrives (vlax-get-property FlSysObj 'Drives))
- (vlax-for PCDrive PCDrives
- (setq PCDriveChoice (vlax-get-property PCDrive 'DriveLetter))
- (if (/= PCDriveChoice "A")
- (setq PCDriveLetter (cons PCDriveChoice PCDriveLetter))
- ) ;if
- ) ;vlax
- (setq i 0)
- (while (and (<= i (1- (length PCDriveLetter))) ContProc)
- (setq PCDrive (vlax-get-property
- PCDrives
- 'Item
- (nth i PCDriveLetter)
- )
- )
- (if (and
- (= (vlax-get-property PCDrive 'DriveType) 2)
- (= (vlax-get-property PCDrive 'IsReady) :vlax-true)
- ) ;and
- (progn
- (setq PCFolder (vlax-get-property PCDrive 'RootFolder))
- (setq PCFolderPath (vlax-get-property PCFolder 'Path))
- (MainProc InputFile PCFolderPath)
- ) ;progn
- ) ;if
- (setq i (1+ i))
- ) ;while
- ReturnFolder
- ) ;progn
- ) ;if
- ) ;defun
- (defun MainProc (SearchFile SearchFolder /
- PCFolder PCSubFolders PCLoopFolder
- PCFolderPath FullPath
- )
- (if (/= (substr SearchFolder (strlen SearchFolder) 1) "\")
- (setq SearchFolder (strcat SearchFolder "\"))
- ) ;if
- (setq FullPath (strcat SearchFolder SearchFile))
- (if (= (vlax-invoke-method FlSysObj 'FileExists FullPath)
- :vlax-true
- )
- (progn
- (setq ReturnFolder FullPath)
- (setq ContProc nil)
- ) ;progn
- (progn
- (if
- (not (vl-catch-all-error-p
- (setq PCFolder (vl-catch-all-apply
- 'vlax-invoke-method
- (list FlSysObj 'GetFolder SearchFolder)
- )
- )
- )
- )
- (progn
- (setq PCSubFolders (vlax-get-property PCFolder 'SubFolders))
- (vlax-for PCLoopFolder PCSubFolders
- (if ContProc
- (progn
- (setq PCFolderPath
- (vlax-get-property PCLoopFolder 'Path)
- )
- (MainProc SearchFile PCFolderPath)
- ) ;progn
- ) ;if
- ) ;vlax
- ) ;progn
- ) ;if
- ) ;progn
- ) ;if
- ) ;defun
|