Question
appliquer code aux sous dossiers
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
il y a 7 ans 9 mois #25444
par vincent
appliquer code aux sous dossiers a été créé 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
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 7 ans 9 mois #25447
par Philippe
Réponse de Philippe sur le sujet Re:appliquer code aux sous dossiers
salut vinsmimie
sous DOS le dir utilise /S pour les sous dossier
mais dir en PowerShell est un alias de Get-ChildItem qui utilise \"-Recurse\" 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
sous DOS le dir utilise /S pour les sous dossier
mais dir en PowerShell est un alias de Get-ChildItem qui utilise \"-Recurse\" 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.
- vincent
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
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 \"computestatistics\" avec \"1\" argument(s) : \"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
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 \"computestatistics\" avec \"1\" argument(s) : \"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.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 9 mois #25451
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:appliquer code aux sous dossiers
Bonjour,
PowerShell te sors une erreur car à un moment donné ton script essaie d'appeler la méthode \"computestatistics()\" 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
PowerShell te sors une erreur car à un moment donné ton script essaie d'appeler la méthode \"computestatistics()\" 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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- appliquer code aux sous dossiers