我试图使用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()
有没有办法抑制所有单词对话框/警告/错误,它应该是一个相当自动的过程,最终是一个非常手动的过程。
答案 0 :(得分:0)
我发现你应该在Word-COM命令之间暂停。 我还必须编写Word转换文档的脚本。点到。 DOTM。 我不仅偶尔会得到保存对话框,而且还会在控制台中出现很多E_FAIL错误。 休息时间(最长50毫秒)有很大帮助。 打破Powershell:
Start-Sleep -m 50
我希望它会对你有所帮助。
问候 Bloodrayne1995