CADsite forum

AutoCAD => Autolisp => Topic gestart door: EddyBeerke op di 15 03 2011, 11:42:00

Titel: Doorzoeken van submappen [opgelost]
Bericht door: EddyBeerke op di 15 03 2011, 11:42:00
Wat is een makkelijke manier om in submappen te zoeken naar een opgegeven bestand met lisp?

Voorbeeld:
D:\tekeningen
hier staan dan weer mapjes in zoals:
- Xrefs
- Vervallen
- PLT
En in bv "Xrefs" staan ook weer mapjes:
   - Vervallen
   - Ontvangen
   - enz.

Met de onderstaande code lukt het natuurlijk niet als het bestand in "D:\Tekeningen\Vervallen\" staat:
(setq tmp "Drawing1.dwg")
(setq gevondenbestand (findfile tmp))


Titel: Re:Doorzoeken van submappen
Bericht door: sschevers op di 15 03 2011, 13:24:15
Eddy,

Kijk eens naar bijgevoegde lisp functie. In het commentaar staat hoe je hem kan gebruiken


stephan
Titel: Re:Doorzoeken van submappen
Bericht door: EddyBeerke op di 15 03 2011, 14:52:25
Zal er misschien  morgen naar kijken.
BVD :vreegoe:
Titel: Re:Doorzoeken van submappen
Bericht door: PJ op di 15 03 2011, 18:16:00
Dit is de routine die ik gebruik :

;;; by Peter Jansoone (pj@digitalplantservices.net) 15/3/2011

;;;fe (FindFileSub "c:\\acad\\" "test.txt")

(defun FindFileSub (InFolder FileName / Folderlist2 Folderlist2item )
(if (findfile (strcat InFolder FileName))
  (setq Folderlist (list (findfile (strcat InFolder FileName))))
)
(vl-load-com)
(setq Folderlist2 (vl-directory-files InFolder nil -1))
(if Folderlist2
  (foreach Folderlist2Item Folderlist2
   (if (and (/= Folderlist2Item ".")(/= Folderlist2Item "..")(/= Folderlist2Item nil))
    (progn
     (setq sFolder (strcat Infolder Folderlist2Item "/"))
     (if (findfile (strcat sFolder FileName))
      (setq FolderList (cons (findfile (strcat sFolder FileName)) Folderlist))
     )
    )
   )
  )
)
(setq folderlist (reverse Folderlist))
Folderlist
)

Titel: Re:Doorzoeken van submappen
Bericht door: HofCAD op di 15 03 2011, 18:33:52
Citaat van: sschevers op di 15 03 2011, 13:24:15
Eddy,

Kijk eens naar bijgevoegde :oops: :oops: lisp functie. In het commentaar staat hoe je hem kan gebruiken

stephan
Beste Stephan,

In je Lispbestand heb je 'z-files-in-directory' veranderd in 'Listdirectories',
maar je hebt niet gezien dat de sub recursief is.
Dit zelfs ondanks de naam: recurse_dir_dirlist.lsp  :lol:
Binnen de sub 'z-files-in-directory' wordt namelijk ook 'z-files-in-directory'  gebruikt.
     '(lambda (d)
        (z-files-in-directory
          (strcat directory "\\" d)
          pattern
          nested
        ) ;_ z-files-in-directory
      ) ;_ lambda
Zie voor het originele bestand bijv.:  DWGRULL van Azarko  in http://forums.augi.com/showthread.php?t=101676

Met vriendelijke groet, HofCAD CSI.
Titel: Re:Doorzoeken van submappen
Bericht door: HofCAD op di 15 03 2011, 18:51:31
Beste Eddy,

Uit een heel ver verleden, komt het bijgevoegde inefficiƫnte DOS kreng. :oops: :oops: :oops: :oops: :oops:

Met vriendelijke groet, HofCAD CSI.

PS Voor wat leukers http://www.theswamp.org/index.php?topic=15057.0
Titel: Re:Doorzoeken van submappen
Bericht door: sschevers op wo 16 03 2011, 07:12:54
Citaat van: HofCAD op di 15 03 2011, 18:33:52
Beste Stephan,

In je Lispbestand heb je 'z-files-in-directory' veranderd in 'Listdirectories',
maar je hebt niet gezien dat de sub recursief is.
Dit zelfs ondanks de naam: recurse_dir_dirlist.lsp  :lol:
Binnen de sub 'z-files-in-directory' wordt namelijk ook 'z-files-in-directory'  gebruikt.
     '(lambda (d)
        (z-files-in-directory
          (strcat directory "\\" d)
          pattern
          nested
        ) ;_ z-files-in-directory
      ) ;_ lambda
Zie voor het originele bestand bijv.:  DWGRULL van Azarko  in http://forums.augi.com/showthread.php?t=101676

Met vriendelijke groet, HofCAD CSI.


HofCad,

Helemaal gelijk. Ik ben er laatst mee aan het rommelen geweest en ik dacht dat dit de juiste versie was. Bij deze het juiste bestand.

stephan


Titel: Re:Doorzoeken van submappen
Bericht door: EddyBeerke op wo 16 03 2011, 10:59:01
Citaat van: HofCAD op di 15 03 2011, 18:33:52
...
Zie voor het originele bestand bijv.:  DWGRULL van Azarko  in http://forums.augi.com/showthread.php?t=101676

Met vriendelijke groet, HofCAD CSI.


Ik had het inderdaad gezien nadat ik het op papier had om in de wachtkamer van de dokter te bekijken.
Daarna ben ik gaan met Google zoeken naar z-files-in-directory.
Ik vond het bij The Swamp ook: http://www.theswamp.org/index.php?topic=15057.0


Maar erg bedankt ik ga er zeker iets mee doen.

PS:
Ik heb zelf ook in DOS wel eens wat gerommeld maar dat is wat anders dan Lisp.
Maar voor de liefhebbers ->> Maak van de code hieronder een *.BAT en plaats het in een map en voer het uit:
ECHO Off
ECHO http://www.computerhope.com/issues/ch000772.htm

ECHO The above command will take the list of all the files and
ECHO all of the information about the files, including size,
ECHO modified date, etc., and send that output to the print.txt
ECHO file.
PAUSE

dir > PrintDir.txt

ECHO dir /b > PrintDir.txt

ECHO This command would print only the file names and not the file information of the files in the current directory.

ECHO dir /s /b > PrintDir.txt

ECHO This command would print only the file names of the files in the current directory and any other files in the directories in the current directory.

ECHO On

ECHO Off
CLS

ECHO.
ECHO Gemaakt door E.F. Lucas
ECHO.
ECHO.
ECHO Dir2Txt maakt een lijst van de map waar dit bestand zich in bevindt.
ECHO Alle bestanden en mappen incl. alle informatie , incl.
ECHO grote, gewijzigd datum, etc., en zet dat in PrintDirAll.txt
ECHO.
ECHO Hierna wordt PrintDirAll.txt geopend.
ECHO.
ECHO.Druk op [Ctrl+C] om te annuleren. . .
PAUSE

ECHO COMMANDO:
DIR > PrintDirAll.txt
ECHO.
ECHO Lijst wordt gemaakt.
ECHO .
ECHO .
ECHO .
ECHO .
ECHO .
ECHO .
ECHO Klaar. . . PrintDirAll.txt wordt geopend

PrintDirAll.txt
ECHO On