我正在尝试批量创建.docx文档中的PDF文档。由于没有押韵或原因(文件权限相同,文件没有宏等),文件将挂起。我必须杀死Word进程并强行关闭PowerShell。
脚本在这里:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true)]
[string]$FilePath
)
$Files = Get-ChildItem -Recurse "$FilePath\*.docx"
$Word = New-Object -ComObject Word.Application
foreach ($File in $Files) {
# open a Word document, filename from the directory
$Doc = $Word.Documents.Open($File.FullName)
Write-Verbose "Test $($File.FullName)"
# Swap out DOCX with PDF in the Filename
$Name = ($Doc.FullName).Replace("docx","pdf")
# Save this File as a PDF in Word 2010/2013
$Doc.SaveAs([ref] [string]$Name, [ref] 17)
$Doc.Close()
}
这是PowerShell输出。您可以看到它挂起的文件:
这可能是2-3%的文件。这与发布here的此问题非常相似。但是,他们的解决方案无法解决我的问题。
有没有人有任何建议?我还想知道是否有一种直观的方法来调试它。我无法看到程序丢失任何错误。
答案 0 :(得分:0)
如何关闭整个应用程序(是的,速度较慢),而不是每个文档?像这样:
Foreach ($File in $Files) {
$Word = New-Object -ComObject Word.Application
$Name = $File.FullName -replace ‘docx’,’pdf’
($Word.Documents.Open($File.FullName)).SaveAs([ref]$Name,[ref]17)
$Word.Application.ActiveDocument.Close()
$Word.Quit()
}