将 70,000 个 RTF/DOC 文件合并为一个

将 70,000 个 RTF/DOC 文件合并为一个

我想将 70,000 个 RTF 和 DOC 文件合并为一个。

我尝试使用 Microsoft Word 2010 并执行“插入”→“对象”→“来自文件的文本”,但它有一些限制,因为无论您选择多少个文件,它都无法将超过几十个文件拼接在一起。

是否有任何(最好是开源的)实用程序可以合理地快速合并如此大量的文件?

答案1

给你。我目前正深陷于 AutoIt 中,所以我用了它。你可以在 autoitscript.com 上获取该工具本身。

笔记:

  • 我绑定了Ctrl+Shift+I到 Word 的插入文件命令,您应该执行相同的操作以使脚本正常工作。使用 Google 搜索或在 StackExchange 上查找。

  • 该脚本的工作原理是假设 MS Word 中已经打开了一个空文档,并且只有一个 MS Word 窗口。

  • 修改$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 数量调整循环限制。此外,如果文件的命名不符合您最初指定的编号方案,则脚本将需要更改。

答案2

如果您使用的是 UNIX 操作系统,请使用以下命令:

textutil -cat rtf *.rtf *.doc -output combinedFiles.rtf

相关内容