1

すべてのファイルを .rtf から .doc に変換してから元に戻すスクリプトを powershell で作成する必要があります。そのような変換後にrtfファイルのサイズを小さくするレジストリ修正を適用したので、それをやりたいです(2番目のWMF画像固有の情報http://support.microsoft.com/kb/224663を保存しません)。スクリプト ワークフローを RTF_1 として doc に保存し、rtf1 を閉じて rtf 1 を削除し、doc を rtf2 に保存し、doc を閉じて doc を削除します。

4

1 に答える 1

0

これが最終的な作業スクリプトです(削除せずに、必要ないと判断しました)

param([string]$rtfpath,[string]$docpath = $rtfpath,[string]$docpath2 = $rtfpath2)
$srcfiles = Get-ChildItem $rtfPath -filter "*.rtf"
$docfiles = Get-ChildItem $docPath -filter "*.doc"
$saveFormat =[Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatDocument");
$saveFormat_back =[Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatRTF");
$word = new-object -comobject word.application
$word.Visible = $False
function saveas-DOC
     {

  $name = $rtf.basename
  $savepath ="$docpath\rtf" + $name + ".doc"
  write-host $name
  Write-Host $savepath
         $opendoc = $word.documents.open($rtf.FullName);
         $opendoc.saveas([ref]$savepath, [ref]$saveFormat);
         $opendoc.close();
     }

function saveas-back_to_rtf
{
         $name = $doc.basename
   $savepath2 ="$rtfpath2\doc" + $name + ".rtf"
   write-host $name
   Write-Host $savepath
         $opendoc = $word.documents.open($doc.FullName);
         $opendoc.saveas([ref]$savepath2, [ref]$saveFormat_back);
         $opendoc.close();

}

ForEach ($rtf in $srcfiles)
     {
         Write-Host "Processing :" $rtf.FullName
         saveas-DOC

     }

ForEach ($doc in $docfiles)
     {
         Write-Host "Processing doc file :" $doc.FullName
         saveas-back_to_rtf
         $doc = $null
     }


$word.quit();
于 2014-08-20T11:56:06.517 に答える