Aller au contenu

Charger tous les progs d\'un dossier et sous-dossier


Messages recommandés

Posté(e)

Après m'être battu avec le code et grace à votre aide, j'ai l'honneur (!) de vous présenter un lisp qui va tenter de charger toutes les applications qui sont présentent dans un répertoire et ses sous répertoire.

 

J'ai voulu ce code car dans ma société, on utilise beaucoup de dvb et lsp. Il faut les charger au démarrage pour les lancer. Mais il y en a des nouveaux tous les jours (ou presque). On ne sait pas s'ils sont chargés. On ne sait pas ou ils sont rangés. Avec cette solution, plus besoin de se poser de questions (pourvu que l'application soit enregistrées dans une sous arborescence du répertoire indiqué).

 

En fonction de l'arborescence du répertoire et du nombre d'application à charger, la recherche et le chargement peut être long. je suis preneur de solutions pour accélerer ce code...

 

;par Ludwig avec l'aide des membres de CadXP
(Defun c:TOUTCHARGER ()

 (setq ListFilesFullPath '())
 (setq Listerror '())

 (setq EXTENSIONS_A_CHARGER (list "fas" "dvb" "lsp" "arx"))
 (setq	REPERTOIRE_DE_RECHERCHE
 "M:\\Modele\\Outils_intégration_BDP\\Fonctions\\"
 )

 (foreach EXT EXTENSIONS_A_CHARGER
   (get-files-subdirs
     REPERTOIRE_DE_RECHERCHE
     (strcat "*." EXT)
   )
 )

 (foreach n ListFilesFullPath
   (setq Right (substr n (+ (- (strlen n) 3) 1)))
   (cond
     ((= Right "fas") (setq charg load))
     ((= Right "lsp") (setq charg load))
     ((= Right "dvb") (setq charg vl-vbaload))
     ((= Right "arx") (setq charg arxload))
   )

   (if	(not (vl-catch-all-error-p
       (setq err (vl-catch-all-apply 'charg (list n)))
     )
)
     (progn
(princ (strcat "\n---->CHARGEMENT DE\n" n "\n"))
(charg n)
(princ "\n\n")
     )
     (progn
(princ (strcat "\n---->ERREUR AU CHARGEMENT DE\n"
	       n
	       "\n"
	       (vl-catch-all-error-message err)
	       "\n"
       )
)
(setq listerror (append listerror (list n)))
     )
   )
 )

 (if (/= 0 (length listerror))
   (progn
     (princ
"\n\n\n Il y a eu erreur au chargement des fichiers suivants \n"
     )

     (foreach m listerror
(princ (strcat "-->" m "\n"))
     )
   )
 )
 (princ)
)

; Bruno Toniutti 1.051114
(defun get-subdirs (path)
 (apply (quote append)
 (cons (list path)
       (mapcar '(lambda (x) (get-subdirs (strcat path x "\\")))
	       (cddr (vl-directory-files path nil -1))
       )
 )
 )
)


; sample use with BrowseForFolder from Tony Tanzillo
(defun get-files-subdirs (RootPath ext)
 (foreach path	(get-subdirs RootPath)
   (setq ListFilesFullPath
   (append ListFilesFullPath
	   (mapcar '(lambda (fileName) (strcat path fileName))
		   (vl-directory-files path ext 1)
	   )
   )
   )
 )
				;ListFilesFullPath
)

 

NOTE : je n'ai pas prévu le chargement de VLX et DBX, il suffit de rajouter quelques lignes

NOTE 2 : j'aurais pu passer le chemin du répertoire en variable

Autocad 2021 - Revit 2022 - Windows 10

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité