我想将 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