2017-09-08 2 views
0

Ich versuche mit Powershell Batch-Konvertierung von vielen docx in pdf, in ein anderes Verzeichnis unter Beibehaltung der Ordnerstruktur des Stammes.Verwenden von Powershell zu Batch-Konvertierung von docx zu pdf

Ich habe das Skript funktioniert, aber etwa 1 von 10 Dokumenten Wort erscheint ein "SaveAs" -Dialog, die ich nicht verstehen, die Aufforderung zum Speichern der docx-Datei, obwohl ich sichtbar auf false gesetzt habe.

#Stage the files 
$sourceDir = "C:\Documents\" 
$targetDir = "C:\Temp_Stage\" 

Get-ChildItem $sourceDir -filter "*.doc?" -recurse | foreach{ 
    $targetFile = $targetDir + $_.FullName.SubString($sourceDir.Length); 
    New-Item -ItemType File -Path $targetFile -Force; 
    Copy-Item $_.FullName -destination $targetFile 
} 

#Convert the files 
$wdFormatPDF = 17 
$word = New-Object -ComObject word.application 
$word.visible = $false 
$folderpath = "c:\Temp_Stage\*" 
$fileTypes = "*.docx","*doc" 

Get-ChildItem -path $folderpath -include $fileTypes -Recurse | 
foreach-object { 
$path = ($_.fullname).substring(0,($_.FullName).lastindexOf(".")) 
$doc = $word.documents.open($_.fullname) 
$doc.saveas([ref] $path, [ref]$wdFormatPDF) 
$doc.close() 
} 
$word.Quit() 

Gibt es eine Möglichkeit alle Wortdialoge/Warnung/Fehler zu unterdrücken, sollte es ein ziemlich automatischer Prozess sein, der seine recht manueller Prozess beendet hat.

+0

Können Sie Ihre Variablen drucken? Vielleicht gibt es einen Fehler mit $ path/$ _. Fullname oder $ wdFormatPDF für die Dateien dieser Datei, die das Dialogfenster erscheinen lassen. –

+0

Eine andere Sache zu beachten, wenn Sie rund 1/10 Dokumente sagen, sind sie immer die gleichen oder ist es zufällige Dokumente jedes Mal? –

+0

Es scheint beides zu sein - das gleiche, und zufällig, die Dokumente werden aus einer Sharepoint-Bibliothek gezogen und dann konvertiert. Wenn ich die gleichen Dokumente erneut laufe, bekomme ich die gleichen Fehler, wenn ich vom Sharepoint ziehe, bekomme ich andere. Es muss ein Dokumentproblem sein, aber ich bin nicht sicher, wie man das genaue Problem aufspürt. – DDulla

Antwort

0

Ich fand heraus, dass Sie zwischen den Word-COM-Befehlen anhalten sollten. Ich musste auch ein Skript schreiben, aus dem Word die Dokumente konvertiert. Punkt zu. Punkt. Ich habe nicht nur gelegentlich den Speicherdialog, sondern auch viele E_FAIL-Fehler in der Konsole bekommen. Die Pausen (maximal 50ms) halfen sehr. Pause in Powershell:

Start-Sleep -m 50 

Ich hoffe, es wird Ihnen helfen.

Grüße Bloodrayne1995

+0

Das hat ein bisschen geholfen. Vielen Dank. Hat es Ihren Speicherdialog vollständig gelöst oder verkleinert? Es hat es für mich nicht völlig beseitigt ... – DDulla

Verwandte Themen