Question Récupérer les statistiques d'un document Word
- Jacques Barathon
- Auteur du sujet
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 7 mois #822
par Jacques Barathon
Récupérer les statistiques d'un document Word a été créé par Jacques Barathon
Hello,
Je viens de publier sur mon blog janel.spaces.live.com un script qui permet de récupérer les statistiques d'un ou plusieurs documents Word (nombre de pages, de lignes, de mots, etc).
Le script s'appelle measure-document. La dernière version (en date) est celle publiée sur mon billet daté du 6 août. Vous aurez peut-être besoin de remonter dans les deux billets précédents pour avoir un peu plus d'infos sur l'interaction entre PowerShell et Word, notamment pour l'installation des PIA (Primary Interop Assemblies) nécessaires à un pilotage avancé des applications Office.
Quoi qu'il en soit, voici le script dans sa dernière version. Libre à vous de l'archiver sur ce site et de l'utiliser voire de le modifier comme bon vous semble:
[code:1]# measure-document.ps1
#
# Fournit des statistiques sur le(s) document(s) passé(s) par le pipeline:
#
# - Characters = Nombre de caractères dans le document (hors 'espace')
# - Lines = Nombre de lignes dans le document
# - Name = Nom du document
# - Pages = Nombre de pages dans le document
# - Paragraphs = Nombre de paragraphes dans le document
# - Path = Chemin du document
# - Size = Taille du document (en octets)
# - Spaces = Nombre de caractères 'espace' dans le document
# - Words = Nombre de mots dans le document
#
# Usage:
#
# dir *.doc | measure-document
#
# section exécutée avant le traitement du premier document:
begin
{
# ouverture de l'application:
$wordapp = new-object -com word.application
# création de la variable à utiliser pour les paramètres optionnels laissés vides:
$m = [system.type]::missing
}
# section exécutée pour chaque document:
process
{
# ouverture du document dans Word:
$doc = $wordapp.documents.open($_.fullname,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m)
# récupération des statistiques:
$characters = $doc.ComputeStatistics(\"WdStatisticCharacters\"«»)
$lines = $doc.ComputeStatistics(\"WdStatisticLines\"«»)
$name = $doc.name
$pages = $doc.ComputeStatistics(\"WdStatisticPages\"«»)
$paragraphs = $doc.ComputeStatistics(\"WdStatisticParagraphs\"«»)
$path = $doc.path
$size = $_.length
$spaces = $doc.ComputeStatistics(\"WdStatisticCharactersWithSpaces\"«») - $characters
$words = $doc.ComputeStatistics(\"WdStatisticWords\"«»)
# fermeture du document:
$doc.close()
# construction de l'objet qui contiendra tous les résultats:
$result = new-object PSObject
# ajout des résultats:
$result | add-member NoteProperty Characters $characters
$result | add-member NoteProperty Lines $lines
$result | add-member NoteProperty Name $name
$result | add-member NoteProperty Pages $pages
$result | add-member NoteProperty Paragraphs $paragraphs
$result | add-member NoteProperty Path $path
$result | add-member NoteProperty Size $size
$result | add-member NoteProperty Spaces $spaces
$result | add-member NoteProperty Words $words
# affichage des résultats:
$result
}
# section exécutée après le traitement du dernier document:
end
{
# fermeture de l'application:
$wordapp.quit()
$wordapp = $null
}[/code:1]
Et voici quelques exemples d'usage:
[code:1]# Sur un document:
PS> dir usb_boot.doc | measure-document
Characters : 14853
Lines : 296
Name : usb_boot.doc
Pages : 8
Paragraphs : 127
Path : C:\Users\janel\Documents\Private\test\doc
Size : 75264
Spaces : 2633
Words : 2721
# Sur tous les documents Word d'un répertoire:
PS> dir *.doc* | measure-document | measure-object lines,pages -sum -average -min -max | ft -a
Count Average Sum Maximum Minimum Property
---
5 666,4 3332 1761 3 Lines
5 19 95 49 1 Pages
[/code:1]
Amusez-vous bien!
Janel
Je viens de publier sur mon blog janel.spaces.live.com un script qui permet de récupérer les statistiques d'un ou plusieurs documents Word (nombre de pages, de lignes, de mots, etc).
Le script s'appelle measure-document. La dernière version (en date) est celle publiée sur mon billet daté du 6 août. Vous aurez peut-être besoin de remonter dans les deux billets précédents pour avoir un peu plus d'infos sur l'interaction entre PowerShell et Word, notamment pour l'installation des PIA (Primary Interop Assemblies) nécessaires à un pilotage avancé des applications Office.
Quoi qu'il en soit, voici le script dans sa dernière version. Libre à vous de l'archiver sur ce site et de l'utiliser voire de le modifier comme bon vous semble:
[code:1]# measure-document.ps1
#
# Fournit des statistiques sur le(s) document(s) passé(s) par le pipeline:
#
# - Characters = Nombre de caractères dans le document (hors 'espace')
# - Lines = Nombre de lignes dans le document
# - Name = Nom du document
# - Pages = Nombre de pages dans le document
# - Paragraphs = Nombre de paragraphes dans le document
# - Path = Chemin du document
# - Size = Taille du document (en octets)
# - Spaces = Nombre de caractères 'espace' dans le document
# - Words = Nombre de mots dans le document
#
# Usage:
#
# dir *.doc | measure-document
#
# section exécutée avant le traitement du premier document:
begin
{
# ouverture de l'application:
$wordapp = new-object -com word.application
# création de la variable à utiliser pour les paramètres optionnels laissés vides:
$m = [system.type]::missing
}
# section exécutée pour chaque document:
process
{
# ouverture du document dans Word:
$doc = $wordapp.documents.open($_.fullname,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m)
# récupération des statistiques:
$characters = $doc.ComputeStatistics(\"WdStatisticCharacters\"«»)
$lines = $doc.ComputeStatistics(\"WdStatisticLines\"«»)
$name = $doc.name
$pages = $doc.ComputeStatistics(\"WdStatisticPages\"«»)
$paragraphs = $doc.ComputeStatistics(\"WdStatisticParagraphs\"«»)
$path = $doc.path
$size = $_.length
$spaces = $doc.ComputeStatistics(\"WdStatisticCharactersWithSpaces\"«») - $characters
$words = $doc.ComputeStatistics(\"WdStatisticWords\"«»)
# fermeture du document:
$doc.close()
# construction de l'objet qui contiendra tous les résultats:
$result = new-object PSObject
# ajout des résultats:
$result | add-member NoteProperty Characters $characters
$result | add-member NoteProperty Lines $lines
$result | add-member NoteProperty Name $name
$result | add-member NoteProperty Pages $pages
$result | add-member NoteProperty Paragraphs $paragraphs
$result | add-member NoteProperty Path $path
$result | add-member NoteProperty Size $size
$result | add-member NoteProperty Spaces $spaces
$result | add-member NoteProperty Words $words
# affichage des résultats:
$result
}
# section exécutée après le traitement du dernier document:
end
{
# fermeture de l'application:
$wordapp.quit()
$wordapp = $null
}[/code:1]
Et voici quelques exemples d'usage:
[code:1]# Sur un document:
PS> dir usb_boot.doc | measure-document
Characters : 14853
Lines : 296
Name : usb_boot.doc
Pages : 8
Paragraphs : 127
Path : C:\Users\janel\Documents\Private\test\doc
Size : 75264
Spaces : 2633
Words : 2721
# Sur tous les documents Word d'un répertoire:
PS> dir *.doc* | measure-document | measure-object lines,pages -sum -average -min -max | ft -a
Count Average Sum Maximum Minimum Property
---
5 666,4 3332 1761 3 Lines
5 19 95 49 1 Pages
[/code:1]
Amusez-vous bien!
Janel
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 18 ans 7 mois #823
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Récupérer les statistiques d'un document Word
Superbe script Janel !!! 
Merci beaucoup.
Arnaud
Merci beaucoup.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Robin Lemesle
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 260
- Remerciements reçus 0
il y a 18 ans 7 mois #830
par Robin Lemesle
Robin MVP PowerShell
Réponse de Robin Lemesle sur le sujet Re:Récupérer les statistiques d'un document Word
Salut Janel !
C'est maintenant sans surprise que l'on accueille tes scripts de grande qualité.
Cependant, j'aurai une petite remarque (du chipotage) :
Lors de l'ouverture d'un document avec la méthode open, ne vaudrait-il pas mieux spécifer l'argument readonly à la valeur true ? de façon à ne pas bloquer l'exécution du script si le document est ouvert.
[code:1]$doc = $wordapp.documents.open($_.fullname,$m,$true,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m) [/code:1]
Encore une fois, Merci Janel
Rob
C'est maintenant sans surprise que l'on accueille tes scripts de grande qualité.
Cependant, j'aurai une petite remarque (du chipotage) :
Lors de l'ouverture d'un document avec la méthode open, ne vaudrait-il pas mieux spécifer l'argument readonly à la valeur true ? de façon à ne pas bloquer l'exécution du script si le document est ouvert.
[code:1]$doc = $wordapp.documents.open($_.fullname,$m,$true,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m,$m) [/code:1]
Encore une fois, Merci Janel
Rob
Robin MVP PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Jacques Barathon
- Auteur du sujet
- Hors Ligne
- Administrateur
-
Réduire
Plus d'informations
- Messages : 576
- Remerciements reçus 0
il y a 18 ans 6 mois #856
par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Récupérer les statistiques d'un document Word
Très juste Robin, merci pour la remarque! Du chipotage comme ça, j'en veux bien tous les jours. 
Janel
Janel
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.091 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Contributions à la communauté
- Récupérer les statistiques d'un document Word