2017-01-05 2 views
1

Ich versuche, PowerShell anzuweisen, eine Textdatei zu öffnen und eine bestimmte Kodierungsoption auszuwählen. Wenn diese Textdatei manuell in Word geöffnet wird, versucht sie standardmäßig, sie mit der japanischen Codierung zu öffnen und zeigt bestimmte Zeichen nicht korrekt an.Öffnen Sie ein Word-Dokument und geben Sie die Codierung mit PowerShell an.

Ich habe viele verschiedene Dinge ausprobiert, aber nichts funktioniert, also bin ich total fest.

Diese Textdatei muss unter anderem täglich in PDF konvertiert werden.

Meine aktuelle Skript ist wie folgt:

$wdFormatPDF = 17 

$word = New-Object -ComObject Word.Application 
$word.Visible = $true 

$folderpath = "C:\Users\smirabile\Downloads\report-testing-destination\*" 
$fileTypes = "accepted.spl" 

Get-ChildItem -Path $folderpath -Include $fileTypes | ForEach-Object { 
    $path = ($_.FullName).Substring(0, ($_.FullName).LastIndexOf(".")) 

    $doc = $word.Documents.Open($_.FullName) 

    $Word.Selection.PageSetup.Orientation = 1 
    $Word.Selection.PageSetup.LeftMargin = 20 
    $Word.Selection.PageSetup.RightMargin = 20 
    $doc.Select() 
    $Word.Selection.Font.Size = 9 
    $doc.SaveAs([ref]$path, [ref]$wdFormatPDF) 

    $doc.Close() 
} 

$word.Quit() 
Stop-Process -Name WINWORD -Force 

Antwort

0

Im Zweifelsfall lesen Sie die documentation:

Syntax

expression.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, 
    PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, 
    WritePasswordTemplate, Format, Encoding, Visible, OpenConflictDocument, 
    OpenAndRepair, DocumentDirection, NoEncodingDialog) 

[& hellip;]
Encoding | Optional | Variante | Die Dokumentcodierung (Codepage oder Zeichensatz), die von Microsoft Word beim Anzeigen des gespeicherten Dokuments verwendet werden soll. Kann eine gültige MsoEncoding Konstante sein. [& hellip;] Der Standardwert ist die Systemcodeseite.

Verwenden Sie [Type]::Missing für Parameter, die mit ihrem Standardwert verwendet werden sollen.

Beispiel (unter Verwendung von iso-8859-15-Codierung):

$def = [Type]::Missing 
$doc = $word.Documents.Open(
     $_.FullName, $def, $def, $def, $def, $def, $def, $def, $def, $def, 28605 
     ) 
+0

vergessen zu erwähnen, dass ich schon diesen Artikel lesen, aber ich finde es schwer zu verstehen, wo oder wie Sie den Code schreiben zu tun Dies. bisher habe ich $ Word.expression.Open ($ Encoding: = 65001) bekam dies nicht funktioniert und auch nicht so viele andere Varianten, die ich ausprobiert habe. Tut mir leid, aber ich bin nicht sehr erfahren mit Powershell, so würde jede Hilfe geschätzt werden. – Sal

+0

Sie können benannte Parameter nicht verwenden. Alle Parameter müssen in der richtigen Reihenfolge bereitgestellt werden, nur eine nachlaufende Liste von Standardwerten kann weggelassen werden. Bitte schauen Sie sich das Beispiel an, das ich zur Verfügung gestellt habe. Es ist aus einem bestimmten Grund da. –

+0

Entschuldigung, aber ich habe Ihr Beispiel aus irgendeinem Grund bis jetzt nicht gesehen! obwohl Ihr Code funktioniert, können Sie bitte erklären, warum es mehrere $ def in der Zeile gibt? – Sal

Verwandte Themen