J'essaie d'exécuter un code qui recherche tous les fichiers .doc et .docx dans un répertoire et des sous-répertoires, puis convertit chacun d'eux au format PDF.
Le code ci-dessous ne fonctionne que s'il n'y a aucune instance du pdf dans ces répertoires, c'est-à-dire qu'il ne fonctionne que la première fois. Chaque fois suivante, il échoue avec :
Exception lors de l'appel de "SaveAs" avec "2" argument(s) : "Commande échouée". À l'adresse C:\convert\convertword.ps1 :12 char:13 + $doc.saveas <<<< ($path, $wdFormatPDF) + CategoryInfo : NotSpecified : ( :) [], MethodInvocationException + FullyQualifiedErrorId : ComMethodTargetInvocation
Lorsque je supprime les PDF précédemment créés et que j'exécute à nouveau le PS, tout fonctionne bien. Par conséquent, je ne peux que supposer qu'il y a un commutateur ou un paramètre que je n'ai pas trouvé dans mon programme. SaveAs
qui force en quelque sorte l'écrasement ?
$wdFormatPDF = 17
$word = New-Object -ComObject word.application
$word.visible = $false
$folderpath = "c:\convert\*"
$fileTypes = "*.docx","*doc"
Get-ChildItem -path $folderpath -recurse -include $fileTypes |
foreach-object `
{
$path = ($_.fullname).substring(0,($_.FullName).lastindexOf("."))
"Converting $path to pdf ..."
$doc = $word.documents.open($_.fullname)
$doc.saveas($path, $wdFormatPDF)
$doc.close()
}
$word.Quit()