Question appliquer code aux sous dossiers

Plus d'informations
il y a 7 ans 9 mois #25444 par vincent
Bonjour,

j'ai écrit un bout de code pour compter le nombre de caractères dans des documents word.
Le script se lance de cette manière :

[code:1]dir *.doc | .\measure-document.ps1
[/code:1]

Il fonctionne très bien sur les fichiers word contenus dans mon dossier. Par contre je voudrais lancer le script pour analyser tous les fichiers word contenus dans les sous-dossiers d'un dossier général.

Comment puis-je faire?

Voici mon code:

[code:1]
begin {
$wordapp = new-object -com word.application
}

process {
$doc = $wordapp.documents.open($_.fullname)
$characters = $doc.ComputeStatistics(\"WdStatisticCharacters\")
$name = $doc.name
$path = $doc.path
$doc.close()
if ($characters -le 350) { write-host \"fichier vide\" $path\"\\"$name}
}
[/code:1]
Merci d'avance de votre aide

Message édité par: vinsmimie, à: 31/05/18 14:53

Message édité par: Arnaud, à: 1/06/18 08:32<br><br>Message édité par: Arnaud, à: 1/06/18 08:38

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 9 mois #25447 par Philippe
salut vinsmimie

sous DOS le dir utilise /S pour les sous dossier
mais dir en PowerShell est un alias de Get-ChildItem qui utilise \&quot;-Recurse\&quot; pour lister les sous dossier

donc tu doit lancer ta commande comme ceci :

[code:1]dir *.doc -Recurse | .measure-document.ps1[/code:1]

sans rien changer a ton script

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 9 mois #25450 par vincent
Réponse de vincent sur le sujet Re:appliquer code aux sous dossiers
Merci beaucoup !

Mais maintenant j'ai une erreur dans mon code.
Ca a bien fonctionné pour les premiers fichiers, puis j'ai un message d'erreur :

[code:1]exception lors de l'appel de \&quot;computestatistics\&quot; avec \&quot;1\&quot; argument(s) : \&quot;impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Word.DocumentClass' en type d'interface 'Microsoft.Office.Interop.Word_Document'.

[/code:1]

Je n'ai aucune idée de ce que c'est.
Si vous avez une idée je suis preneur.
Je vais chercher un peu de mon côté.

Merci encore<br><br>Message édité par: Arnaud, à: 1/06/18 08:33

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 9 mois #25451 par Arnaud Petitjean
Bonjour,

PowerShell te sors une erreur car à un moment donné ton script essaie d'appeler la méthode \&quot;computestatistics()\&quot; sur un objet qui n'est pas du bon type.

Je pense que ça doit venir du fichier Office lui-même.

Pour éviter cette erreur, il faudrait faire un test avant de tenter d'appeler cette méthode.

Arnaud<br><br>Message édité par: Arnaud, à: 1/06/18 08:39

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.

Temps de génération de la page : 0.064 secondes
Propulsé par Kunena