Sto cercando di utilizzare PowerShell per fare una conversione batch di Word Docx in PDF - utilizzando uno script trovato su questo sito: http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/24/weekend-scripter-convert-word-documents-to-pdf-files-with-powershell.aspxbase PowerShell - convertire in batch Word Docx in PDF
# Acquire a list of DOCX files in a folder
$Files=GET-CHILDITEM "C:\docx2pdf\*.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)
# 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] $Name, [ref] 17)
$Doc.close()
}
E continuo a ricevendo questo errore e non riesco a capire perché:
PS C:\docx2pdf> .\docx2pdf.ps1
Exception calling "SaveAs" with "16" argument(s): "Command failed"
At C:\docx2pdf\docx2pdf.ps1:13 char:13
+ $Doc.saveas <<<< ([ref] $Name, [ref] 17)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
Qualche idea?
Inoltre, come dovrei cambiarlo per convertire anche i file doc (non docX) e utilizzare i file locali (file nella stessa posizione del percorso dello script)?
Sorry - mai fatto PowerShell script ...
Questo ha funzionato - grazie - ha cambiato $ documents_path essere dinamici in base alla posizione script utilizzando '$ documents_path = Split-Path -parent $ MyInvocation.MyCommand.Path' – takabanana
è oledb usato in questa conversione? – culter
Dovresti anche rilasciare l'oggetto COM: '[System.Runtime.Interopservices.Marshal] :: ReleaseComObject ($ word_app)'. La rimozione dell'intera variabile è suggerita anche da [The Scripting Guys] (http://technet.microsoft.com/en-us/library/ff730962.aspx): 'Remove-Variable word_app' – ComFreek