70,000個のRTFとDOCファイルを1つにマージしたい。
Microsoft Word 2010を使用して、[挿入]→[オブジェクト]→[ファイルからのテキスト]を実行しようとしましたが、選択したファイルの数に関係なく、数十を超えるファイルをつなぎ合わせないため、いくつかの制限があります。 。
そのような量のファイルを適度に速くマージできる(できればオープンソースの)ユーティリティはありますか?
どうぞ。私は現在AutoItにひざまずいているので、それを使用しました。ツール自体はautoitscript.comで入手できます。
ノート:
Ctrl + Shift + IをWordのInsertFileコマンドにバインドしました。スクリプトを機能させるには、同じことを行う必要があります。 Googleで検索するか、StackExchangeで検索してください。
このスクリプトは、空のドキュメントがMS Wordで既に開いており、MSWordウィンドウが1つしかないという前提で機能します。
$ locationOfRtfFilesの値をセットアップに一致するように変更します。 RTFを含むフォルダーを指している必要があります。
スリープ間隔の調整が必要になる場合があります(コンピューターのパフォーマンスとRTFファイル)のサイズ/複雑さによって異なります)
コード(10行強ですが、誰も数えていないことを願いましょう):
; Some common sense stuff, look it up in the docs
AutoItSetOption("TrayIconDebug", 1)
AutoItSetOption("MustDeclareVars", 1)
; Tell AutoIt to match the substring anywhere in the window title
AutoItSetOption("WinTitleMatchMode", 2)
; find a window by title and some contained text (optional),
; make it active and wait for the window to become
; active
Func MyWinWait($title, $keytext = "")
WinWait($title, $keytext)
WinActivate($title, $keytext)
WinWaitActive($title, $keytext)
Return
EndFunc
Local $locationOfRtfFiles = "C:\MyCollectionOfRtfPorn"
; for every file in the set
For $fileIndex = 1 to 70000
; focus on the main Word window
MyWinWait("Microsoft Word")
; emulate Ctrl+Shift+I
Send("{CTRLDOWN}{SHIFTDOWN}i{SHIFTUP}{CTRLUP}")
; wait for the Insert File window to open
MyWinWait("Insert File")
; type out a file's name
Send($locationOfRtfFiles & "\" & $fileIndex & ".rtf")
; confirm selection
Send("{ENTER}")
; sleep for 10 seconds before proceeding to next file
Sleep(10000)
Next
実際のRTFの数に基づいてサイクル制限を調整することをお勧めします。また、ファイルの名前が最初に指定した番号付けスキームに従わない場合は、スクリプトを変更する必要があります。
UNIX OSを使用している場合は、以下を使用してください。
textutil -cat rtf *.rtf *.doc -output combinedFiles.rtf