我正在寻找一个批处理文件或vbscript,将合并像pdf文件名。应该合并的文件将具有相同的文件名,直到第一个“。我有包含大约4000个文件的整个文件夹。文件扩展名与以下格式匹配
111111111111111111.22222222.pdf ==> 1是任意16个数字0-9,2是任意8个数字0-9
我想批量合并文件夹中的相似文件。到第一个文件名相同的所有文件都应该被合并“。
示例:111111111111111111.25484686.pdf应与1111111111111111.54874568合并,而5555555555555555.78468767应与5555555555555555.48687654和55555555555555.68974582合并
这些文件可以输出到另一个文件夹,但不是必需的。输出后的新文件名也无关紧要,只要它工作即可。
我知道有一些软件可以处理这个问题,但是拖放文件来合并它们会花费太长的时间。
发布于 2011-11-01 12:48:05
谷歌搜索发现了http://www.pdfsam.org/ -一个提供免费的PDF合并实用程序的网站,它有一个命令行界面(以及一个图形用户界面)。我不知道这有多好用。请确保您获得了此站点提供的免费实用程序,而不是在同一站点上宣传的竞争对手的解决方案。
市面上还有很多其他的实用程序,大多数都是收费的。
一旦您弄清楚如何使用您选择的实用程序的命令行界面,您就可以使用如下所示的批处理文件来动态构建要合并的文件列表。(此批处理代码未经测试。这个概念肯定会起作用,但可能需要进行一些调试)
@echo off
setlocal enableDelayedExpansion
:: This initial loop determines which files need to be merged
:: and then calls :merge for each unique set of files. This top
:: loop should work no matter what utility you choose.
set "current="
set cnt=0
:: for current directory, LOC should be empty (or .\)
:: for any other path, LOC should include \ at end
set "LOC="
for %%F in ("%LOC%*.*.pdf") do (
for /f "tokens=1,* delims=." %%A in ("%%~nF") do (
if "%%A" neq "!current!" (
if defined current call :merge
set cnt=0
set current=%%A
)
set /a cnt+=1
set pdf.!cnt!=%%~fF
)
exit /b
:merge
:: This routine should build the command line to merge the current
:: file list contained in pdf.1 through pdf.!cnt!
::
:: Below is code to build a hypothetical file list to be used on
:: the merge command line. This will obviously need to be modified
:: based on the syntax of your chosen merge utility.
::
set "list="
for /l %%N in (1 1 !cnt!) do set list=!list! -f "!pdf.%%N!"
::
::
:: The rest is up to you!
::
exit /b发布于 2014-03-12 18:25:11
这个软件,Dysprosium,可以批量合并,而不需要编写批处理文件,也不需要拖放,而且它是免费获取和使用的。如预期的那样,将所有批次放在同一个文件夹中就足够了。但是,您需要具有与批处理中的文件大小成比例的硬件资源。
它是一个简单、轻便的"JAR“文件,无需安装在操作系统上即可移植。
由于它是基于Java的软件,因此您还需要增加可用于Java运行时的Java内存。Java需要占用一部分物理内存来渲染大型PDF文件。这篇wiki解释了如何增加Java运行时内存。
(IMHO)使用现成的软件,您不能合并总大小超过3 3GB 3.5 3GB的PDF批。
https://stackoverflow.com/questions/7111273
复制相似问题