[R] Manipulation des propriétés d'un fichier
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Manipulation des propriétés d'un fichier
Bonjour,
Impossible de faire une recherche sur ces termes car ils sont trop génériques aussi je pose la question : Est-il possible de manipuler, c-à-d de lire et d'écrire, les propriétés d'un fichier ?
Chaque fichier Windows possède des propriétés dont les dates de création, mise à jour etc.. Ces dates sont manipulables. Jusque là tout va bien.
Il y a aussi des propriétés différentes selon les fichiers mais on retrouve toujours les dates et très souvent aussi un onglet "Résumé" - peut-être tout le temps, je ne sais pas - qui contient des champs tels que "Titre", "Objet", "Auteur", "Catégorie", "Mots-clé" et "Commentaires".
J'aimerais écrire dans ce champ "Commentaires" un commentaire sur la version du fichier lorsque je le sauvegarde.
Comme il s'agit d'un fichier Excel, il doit être possible de le faire en utilisant les objets Excel mais j'aimerais savoir si AutoIt permet une écriture de ce commentaire directement, comme il le permet avec les dates, afin de généraliser le processus.
Quelqu'un a-t-il des informations à ce sujet ?
Impossible de faire une recherche sur ces termes car ils sont trop génériques aussi je pose la question : Est-il possible de manipuler, c-à-d de lire et d'écrire, les propriétés d'un fichier ?
Chaque fichier Windows possède des propriétés dont les dates de création, mise à jour etc.. Ces dates sont manipulables. Jusque là tout va bien.
Il y a aussi des propriétés différentes selon les fichiers mais on retrouve toujours les dates et très souvent aussi un onglet "Résumé" - peut-être tout le temps, je ne sais pas - qui contient des champs tels que "Titre", "Objet", "Auteur", "Catégorie", "Mots-clé" et "Commentaires".
J'aimerais écrire dans ce champ "Commentaires" un commentaire sur la version du fichier lorsque je le sauvegarde.
Comme il s'agit d'un fichier Excel, il doit être possible de le faire en utilisant les objets Excel mais j'aimerais savoir si AutoIt permet une écriture de ce commentaire directement, comme il le permet avec les dates, afin de généraliser le processus.
Quelqu'un a-t-il des informations à ce sujet ?
Modifié en dernier par Patrick22 le mer. 27 mai 2015 18:58, modifié 2 fois.
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Manipulation des propriétés d'un fichier
Sur XP il avait toujours cet onglet "Résumé" sur tous les fichiers, mais sur mon Windows 8 il n'est plus présent. Ce qui était écrit dans cet onglet était stocké dans les ADS (Alternate data streams) (dans SummaryInformation). Le problème est que ces données ne sont pas stockées dans le fichier en lui même mais au niveau du système de fichiers (NTFS en l'occurrence). D'ailleurs, en fonction des logiciels de sauvegardes, ces ADS ne sont pas forcément sauvegardés. En ce qui me concerne je préfère ne pas les sauvegarder.
Par contre, pour modifier les propriétés d'un fichier Excel (sans passer par les ADS) — afin que celles-ci soient visibles dans l'onglet "Détails" et dans Excel, je pense qu'il faut utiliser un objet Excel (ObjCreate), à moins que... Dsofile.dll vous permet de modifier les propriétés d'un document Office sans Office (ça peut marcher en VB6 donc ça devrait marcher en AutoIt). Mais si le script sera toujours exécuté sur un poste où Office est installé, la DLL présente peu d'intérêt.
Par contre, pour modifier les propriétés d'un fichier Excel (sans passer par les ADS) — afin que celles-ci soient visibles dans l'onglet "Détails" et dans Excel, je pense qu'il faut utiliser un objet Excel (ObjCreate), à moins que... Dsofile.dll vous permet de modifier les propriétés d'un document Office sans Office (ça peut marcher en VB6 donc ça devrait marcher en AutoIt). Mais si le script sera toujours exécuté sur un poste où Office est installé, la DLL présente peu d'intérêt.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Manipulation des propriétés d'un fichier
D'accord, je vois.
Jusqu'à présent, j'ai toujours évité d'utiliser ces propriétés parce que trop fragile à pérenniser, dans les sauvegardes, les versions de windows, etc.
Là, comme je sauvegarde à la volée dans un dossier les évolutions d'un script, j'ai voulu y ajouter un commentaire pour les distinguer plus facilement.
Tant pis, c'est windows ! On fait avec.
J'ai chercher aussi du coté de ShellExecute avec le verbe "properties" pour ouvrir les propriétés du fichier mais ça ne marche pas non plus. Il faut que "properties" soit déjà défini dans la base de registre pour le fichier traité. Tu parles d'une affaire ! Je ne sais même pas ce qu'il faudrait mettre dans la commande associée pour ouvrir les propriétés du fichier.
On peut le faire aussi en vbs, j'ai fait le script (une dizaine de lignes) mais après il faut l'utiliser depuis AutoIt ou peut-être l'adapter, je ne connais pas assez les subtilité d'AutoIt.
Je laisse tomber. Je voulais juste ajouter un petit plus à mon script de sauvegarde mais pas faire un nouveau développement. Je suis déjà sur un truc compliqué.
Merci pour les infos.
Edit :
Finalement, j'ai craqué. J'ai complété mon script AutoIT par un appel à un script VBS qui utilise DSOFile comme conseillé. C'est nickel. Comme c'est pour un usage personnel, le fait qu'il soit en VBS ne me gène pas trop.
Jusqu'à présent, j'ai toujours évité d'utiliser ces propriétés parce que trop fragile à pérenniser, dans les sauvegardes, les versions de windows, etc.
Là, comme je sauvegarde à la volée dans un dossier les évolutions d'un script, j'ai voulu y ajouter un commentaire pour les distinguer plus facilement.
Tant pis, c'est windows ! On fait avec.
J'ai chercher aussi du coté de ShellExecute avec le verbe "properties" pour ouvrir les propriétés du fichier mais ça ne marche pas non plus. Il faut que "properties" soit déjà défini dans la base de registre pour le fichier traité. Tu parles d'une affaire ! Je ne sais même pas ce qu'il faudrait mettre dans la commande associée pour ouvrir les propriétés du fichier.
On peut le faire aussi en vbs, j'ai fait le script (une dizaine de lignes) mais après il faut l'utiliser depuis AutoIt ou peut-être l'adapter, je ne connais pas assez les subtilité d'AutoIt.
Je laisse tomber. Je voulais juste ajouter un petit plus à mon script de sauvegarde mais pas faire un nouveau développement. Je suis déjà sur un truc compliqué.
Merci pour les infos.
Edit :
Finalement, j'ai craqué. J'ai complété mon script AutoIT par un appel à un script VBS qui utilise DSOFile comme conseillé. C'est nickel. Comme c'est pour un usage personnel, le fait qu'il soit en VBS ne me gène pas trop.
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.
Re: [R] Manipulation des propriétés d'un fichier
Pourquoi utiliser un code VBScript alors qu'on peut le faire avec AutoIt ?
Il ressemble à quoi ton code VBScript ?
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Re: [R] Manipulation des propriétés d'un fichier
Parfait jguinch.
Mon script VBS a les mêmes lignes de codes, à la gestion des arguments prêt.
Directement depuis AutoIt, c'est nettement mieux. Plus besoin de gérer l'écriture du script VBS depuis AutoIt s'il n'existe pas. Et un seul script au total. C'est ce que je cherchais.
Merci à vous : DSOFile + Dans AutoIt
Mon script VBS a les mêmes lignes de codes, à la gestion des arguments prêt.
Code : Tout sélectionner
Set args = WScript.Arguments
If args.count <> 1 Then WScript.Quit
sFichier = args(0)
Set objFile = CreateObject("DSOFile.OleDocumentProperties")
objFile.Open(sFichier)
sCommentaire = InputBox("Commentaires pour cette version :" _
, "Copier dans anciennes versions." _
, objFile.SummaryProperties.Comments)
objFile.SummaryProperties.Comments = sCommentaire
objFile.SaveMerci à vous : DSOFile + Dans AutoIt
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.
- TomAijerrie
- Niveau 5

- Messages : 192
- Enregistré le : lun. 02 juin 2014 09:55
- Localisation : Lyon
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
Moi je rencontre un problème :
Je suis sous Windows 7
Code : Tout sélectionner
[color=#FF0000]"F:\ \Brouillon\dosFile\msdn.au3" (38) : ==> Variable must be of type "Object".:[/color]
$objFile.Open("F:\Nos documents\raccourcis.xlsx")
$objFile^ ERROR- walkson
- Modérateur

- Messages : 1038
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
Bonjour,
Même problème que TomAijerrie. Il semble que la Dll ne soit plus installée depuis Office 2007 (à confirmer ?...). Je pense que jguinch est sous Office 2003 (?)
Aprés une rapide recherche: https://support.microsoft.com/fr-fr/kb/224351/fr pour la Dll
Mais de mémoire, je sais qu'avec vba excel on peut écrire les propriétés du document.
Une rapide tentative sous vba excel me donne ceci:
Pas eu le courage de le traduire en Autoit....
Petite remarque, j'ai commenté certaines lignes qui sont les propriétés personnalisées et qui ne peuvent être reproduite à l'identique (en décommentant, marche la première fois et bug la deuxième, logique!)
Même problème que TomAijerrie. Il semble que la Dll ne soit plus installée depuis Office 2007 (à confirmer ?...). Je pense que jguinch est sous Office 2003 (?)
Aprés une rapide recherche: https://support.microsoft.com/fr-fr/kb/224351/fr pour la Dll
Mais de mémoire, je sais qu'avec vba excel on peut écrire les propriétés du document.
Une rapide tentative sous vba excel me donne ceci:
► Afficher le texte
Petite remarque, j'ai commenté certaines lignes qui sont les propriétés personnalisées et qui ne peuvent être reproduite à l'identique (en décommentant, marche la première fois et bug la deuxième, logique!)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: [R] Manipulation des propriétés d'un fichier
As-tu codé cette ligne avant, pour créer l'objet :
Il faut aussi installer la DLL de DSOFile :
https://technet.microsoft.com/library/ee692828.aspx
https://www.microsoft.com/en-us/downloa ... px?id=8422
Ceci dit, je crois bien que cela ne marchera pas avec Windows 7.
Le dernier lien au-dessus, celui du téléchargement dit ceci dans la rubrique "System Requirements" :
Code : Tout sélectionner
Set objFile = CreateObject("DSOFile.OleDocumentProperties")https://technet.microsoft.com/library/ee692828.aspx
https://www.microsoft.com/en-us/downloa ... px?id=8422
Ceci dit, je crois bien que cela ne marchera pas avec Windows 7.
Le dernier lien au-dessus, celui du téléchargement dit ceci dans la rubrique "System Requirements" :
Supported Operating System
Windows 2000, Windows Vista, Windows XP
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.
- walkson
- Modérateur

- Messages : 1038
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
Oui, j'ai créé l'objet sans résultat
Dans le doute, j'ai fait une recherche de la Dll sur mon PC, sans résultat.
Après, installer une Dll pour obtenir la même chose que le code Vba excel, bof !...
Dans le doute, j'ai fait une recherche de la Dll sur mon PC, sans résultat.
Après, installer une Dll pour obtenir la même chose que le code Vba excel, bof !...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
J'ai Excel 2010 et je n'ai pas dû installer de DLL. J'ai testé le code suivant avec 2 versions de fichiers Excel. Le code fonctionne si le fichier est au format Excel 97 - 2003. Lorsqu'il est au format 2010, il n'y a pas d'erreur mais la "MsgBox" est vide.
Code : Tout sélectionner
$objFile = ObjCreate("DSOFile.OleDocumentProperties")
;~ $objFile.Open(@ScriptDir & "\test.xlsx") ; format Excel 2010 (non fonctionnel)
$objFile.Open(@ScriptDir & "\Classeur1.xls") ; format Excel 97 - 2003 (fonctionnel)
MsgBox(0,'',$objFile.SummaryProperties.Author & @CRLF)
MsgBox(0,'',$objFile.SummaryProperties.Keywords & @CRLF)De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [R] Manipulation des propriétés d'un fichier
Perso je n'ai pas testé, mais il semblerait que ce soit possible pour les fichiers Office 2007 (donc 2010 normalement) d'après ce lien : https://www.microsoft.com/en-us/downloa ... px?id=8422. Voir la section détails qui mentionne This will allow users that have the Office 2007 Compatibility Pack to read/write document properties for Office 2007 files without actually having Office 2007 installed. Donc peut-être faudrait-il installer le pack de compatibilité 2007 pour Office 2003 ? Mais là je suis pas trop sûr, car si on n'a pas Office 2003 installé, je sais si on pourra l'installer... A tester
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
- jchd
- AutoIt MVPs (MVP)

- Messages : 2284
- Enregistré le : lun. 30 mars 2009 22:57
- Localisation : Sud-Ouest de la France (43.622788,-1.260864)
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
Si on sort du cadre Excel, ne serait-on pas proche de ce qu'offre un logiciel de gestion de versions, type svn et consort, rien qu'en en n'utilisant seulement quelques aspects ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Re: [R] Manipulation des propriétés d'un fichier
Réponses aux questions sur l'intérêt de la démarche :
Je travaille avec Excel dans un dossier.
Dans ce dossier, je place aussi mon script au3 compilé.
Lorsque, en cours de travail, j'ai envie de garder une version de mon travail, je fais glisser le classeur sur le script au3.
Celui le copie dans un sous-dossier "Anciennes versions", créé s'il n'existe pas, avec date et heure dans le nom du classeur, voire seconde s'il y a doublon, et, maintenant la possibilité de saisir un commentaire.
Je travaille avec Excel dans un dossier.
Dans ce dossier, je place aussi mon script au3 compilé.
Lorsque, en cours de travail, j'ai envie de garder une version de mon travail, je fais glisser le classeur sur le script au3.
Celui le copie dans un sous-dossier "Anciennes versions", créé s'il n'existe pas, avec date et heure dans le nom du classeur, voire seconde s'il y a doublon, et, maintenant la possibilité de saisir un commentaire.
- - Pas de gestion de bases SQL et autres.
- Pas d'installation de logiciel de versionning.
- Intégrité du classeur Excel : seul son nom est complété.
- Indépendance complète des divers environnements de version puisqu'ils sont simplement liée au dossier de travail et aux scripts de ce dossier.
- Possibilité d'utiliser le même système avec d'autres types de fichiers.
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.
- TomAijerrie
- Niveau 5

- Messages : 192
- Enregistré le : lun. 02 juin 2014 09:55
- Localisation : Lyon
- Status : Hors ligne
Re: [R] Manipulation des propriétés d'un fichier
Si on sort du cadre Excel,
comment faire pour changer les métadonnées d'un fichier (Microsoft office ou non) ?
comment faire pour changer les métadonnées d'un fichier (Microsoft office ou non) ?
Re: [R] Manipulation des propriétés d'un fichier
Je viens d'essayer avec des fichiers au3, txt, bat, vbs, ppf, zip, bmp.
Ça fonctionne pour tous ceux dont le résumé est disponible dans les propriétés, c'est-à-dire : au3, txt, bat, vbs et ppf.
Les fichiers zip et bmp ont la zone commentaire grisé dans leurs propriétés et il n'est pas possible d'écrire dedans.
Il semble donc que la solution avec DSOFile fonctionne pour tous les types de fichiers du moment que les commentaires de leurs propriétés soient accessibles.
Bonne nouvelle : Il est possible aussi de l'utiliser lors de développements en AutoIt, en batch, en VBS, etc.
Ça fonctionne pour tous ceux dont le résumé est disponible dans les propriétés, c'est-à-dire : au3, txt, bat, vbs et ppf.
Les fichiers zip et bmp ont la zone commentaire grisé dans leurs propriétés et il n'est pas possible d'écrire dedans.
Il semble donc que la solution avec DSOFile fonctionne pour tous les types de fichiers du moment que les commentaires de leurs propriétés soient accessibles.
Bonne nouvelle : Il est possible aussi de l'utiliser lors de développements en AutoIt, en batch, en VBS, etc.
Si tu sais ce que tu fais, tu ne peux faire que ce que tu sais déjà faire.

