Aller au contenu

Scripting.FilesystemObject


(gile)

Messages recommandés

Jeff Mishler donne ici un moyen en vlisp bien pratique pour jongler avec les fichier et dossiers (créer, supprimer, copier, déplacer ...).

 

D'après une rapide recherche dans CADxp, seuls quelques VBAistes utilisent Scripting.FilesystemObject.

 

Par exemple, pour copier le contenu d'un dossier dans un autre (si le dossier de destination n'existe pas, il est créé) :

 

 (defun CopyFolder (source destination / fso)
 (setq FSO (vlax-create-object "Scripting.FilesystemObject"))
 (if (= -1 (vlax-invoke fso 'folderexists source))
   (vlax-invoke fso 'copyfolder source destination)
 )
 (vlax-release-object fso)
)

 

[Edité le 18/7/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Waou..., c'est génial

Cela ouvre des horizons, reste à savoir où trouver ces instructions comme le "Scripting.FilesystemObject"

 

Après quelques recherches, j'ai trouvé pour le fun

(vlax-invoke-method (vlax-get-or-create-object "WScript.Shell") "SendKeys" "{CAPSLOCK}")
(vlax-invoke-method (vlax-get-or-create-object "WScript.Shell") "SendKeys" "{NUMLOCK}")

 

ps: dans le lisp que tu donnes, il y a un And qui est inutile

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

ps: dans le lisp que tu donnes, il y a un And qui est inutile

Merci, je n'ai pas voulu copier bêtement celui donné par Jeff Mishler, alors je l'ai un peu modifié en faisant une bétise (je corrige).

 

J'avoue ne pas comprendre quelles peuvent être les utilisations de WScript.Shell (à part activer ou désactiver le pavé numérique), j'ai fait un (vlax-dump-object ...) qui ne m'apprend pas gand chose ...

 

_$ (vlax-dump-object (vlax-get-or-create-object "WScript.Shell") T)

 

; IWshShell3: Shell Object Interface

; Valeurs de propriétés:

; CurrentDirectory = ...Contenu indexé masqué...

; Méthodes prises en charge:

; Exec (2)

T

_$

 

[Edité le 18/7/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Bonjour,

 

J’utilise régulièrement cette technologie car elle permet de faire à peu prés ce qu'on veut, Un fichier d'aide existe : chercher Script56.CHM avec google, il doit être disponible sur le site de Microsoft. A ma connaissance c'est Tony Tanzillo avec sa routine BrowseForFolder (voir son site) qui a popularisé cette technologie et effectivement Jeff Mishler (et d'autres) en fait un usage intensif.

 

voici un exemple d'une utilisation (qui est une partie d'un ensemble de routines, donc seule elle n'a pas de sens)

 

Bruno Toniutti

 

;FONCTION : copie un fichier avec respect de :

; la date d'origine du fichier copier

; controle des status lecture seule et/ou en cours d'édition du fichier destination

; identification de la session pour un fichier en cours d'édition

;

;LANCEMENT PAR : (CopyFileServer source target)

;

;PROPRIETE : BERIM

;

;REALISATION : Bruno TONIUTTI BTO Responsable CAO DAO

;

;VERSION : 1.051109 première version

; 1.051110 ajout de l'identification de la session pour un fichier en cours d'édition

; 1.051114 utilisation de vl-filename-base (débugué avec la 2006)

; 1.051115 correction de la construction du fichier dwl

; +optimisation mineure

;

;REMARQUE : 1.051115 testée sous AutoCAD MAP 3D 2006 Win XP Pro sp2

; L'identification des sessions fonctionne aussi avec AutoCAD LT 2005 2006

; Du fait de l'usage de vl-filename-base, nécessite AutoCAD >= 2006 pour être OK avec fichier terminé par " .dwg"

;

;--------------------------------------------------------------------------------------------------------------

 

(defun CopyFileServer (oldPathFileName newPathFileName / catch idDwl dwl objWsh objFile idFile success message)

(setq success nil)

(if (findfile oldPathFileName)

(progn

(setq objWsh (vlax-create-object "Scripting.FileSystemObject"))

(if (findfile newPathFileName)

(if (setq idFile (open newPathFileName "a"))

(progn

(close idFile)

(vlax-invoke-method objWsh 'CopyFile oldPathFileName newPathFileName :vlax-true)

(setq message "copy is OK")

(setq success T)

)

(progn

(setq objFile (vlax-invoke-method objWsh 'GetFile newPathFileName))

(if (eq 1 (logand 1 (vlax-get objFile 'Attributes)))

(setq message "target file is read only")

(progn

(setq dwl (strcat path_job "\\" (vl-filename-base newPathFileName) ".dwl"))

(if (findfile dwl)

(progn

(setq idDwl (open dwl "r"))

(setq message (strcat "target file is open by " (read-line idDwl)))

(close idDwl)

)

(setq message "target file is opened by unknown user")

)

)

)

(vlax-release-object objFile)

)

)

(progn

(vlax-invoke-method objWsh 'CopyFile oldPathFileName newPathFileName :vlax-true)

(setq message "copy is OK")

(setq success T)

)

)

(vlax-release-object objWsh)

)

(setq message "source file not found")

)

(mapcar '(lambda (x) (set x nil)) '(catch oldPathFileName newPathFileName idDwl dwl objWsh objFile idFile))

(list success message)

)

 

Lien vers le commentaire
Partager sur d’autres sites

Oh les gars, je suis largué, notamment à propos des sendkeys et des infos-bulles.

 

Je crois comprendre, mais elle fait aussi la vaisselle cette famille de fonction ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

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é