使用powershell将docx批量转换为pdf

时间:2017-09-08 21:45:48

标签: powershell pdf ms-word

我试图使用powershell将大量docx批量转换为pdf,转换到另一个目录,同时保持根目录的文件夹结构。

我有脚本工作,但是每10个文件中就有1个弹出一个" SaveAs"对话框,我不明白提示我保存docx文件,虽然我的可见设置为false。

#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()

有没有办法抑制所有单词对话框/警告/错误,它应该是一个相当自动的过程,最终是一个非常手动的过程。

1 个答案:

答案 0 :(得分:0)

我发现你应该在Word-COM命令之间暂停。 我还必须编写Word转换文档的脚本。点到。 DOTM。 我不仅偶尔会得到保存对话框,而且还会在控制台中出现很多E_FAIL错误。 休息时间(最长50毫秒)有很大帮助。 打破Powershell:

Start-Sleep -m 50

我希望它会对你有所帮助。

问候 Bloodrayne1995